[Node.js]認証の適用順序
7667 ワード
Auth適用順に閉じるプレイヤー会員が に加入 bccriptを使用して、暗号化されたパスワードとアイデンティティをユーザーレポートに 保存します.ユーザー登録 bccriptを使用して、暗号化されたパスワードをユーザーレポートに 保存します. jwtトークンを作成し、ユーザ(ブラウザ) に送信するログイン時に、ユーザが入力パスワードと暗号化パスワードが同じか否かを比較検証する .が正常にログインするとjwtトークン が送信される.ログイン者の場合は、ヘッダーの にauthlizationを送信します.ミドルウェアで常にログインする必要があるサービスがある場合は、ミドルウェアにヘッダーがあるかどうか&発行したトークンが有効かどうかを確認します.
ユーザーが有効である場合は、「使用」章のid user to req objectを使用します.idを保存します.
-auth認証が完了しました
保存されたuserid情報を使用すると、Auth後のミドルウェアでユーザー情報を知ることができます. 認証ミドルウェアの実装
ユーザーが有効である場合は、「使用」章のid user to req objectを使用します.idを保存します.
-auth認証が完了しました
保存されたuserid情報を使用すると、Auth後のミドルウェアでユーザー情報を知ることができます.
import jwt from "jsonwebtoken";
import * as userRepository from "../data/auth.js";
const AUTH_ERROR = { message: "Authentication Error" };
//비동기로 사용할 수 있는 콜백함수, Express에서 사용하는 middleware
export const isAuth = async (req, res, next)=>{
//header 안에 Authorization key 의 valuse를 가져옴
const authHeader = req.get('Authorization');
//authHeader가 없거나, Bearer로 시작하지 않으면 auth error 처리
if(!(authHeader && authHeader.startsWith('Bearer'))){
return res.status(401).json(AUTH_ERROR);
}
//Authorization header에서 token만 가져옴
const token = authHeader.split(' ')[1]; //공백으로 분리
//token이 유효한지 검증
jwt.verify(token, SECRET_KEY, async (error, decoded)=>{
if(error){
return res.status(401).json(AUTH_ERROR);
}
const user = await userRepository.findById(decoded.id); //존재하는 user인지 확인
if(!user){
return res.status(401).json(AUTH_ERROR);
}
//token이 있을때만 req 자체에 userid를 추가해줌.
//앞으로 이어질 콜백합수에서 동일하게 접근해야하는 데이터라면 이렇게 등록해줄 수 있음\
//이렇게하면 req에는 username, token, userId가 존재
req.userId = user.id;
next();
})
}```
Reference
この問題について([Node.js]認証の適用順序), 我々は、より多くの情報をここで見つけました https://velog.io/@liam_jeon/Node.js-Auth-적용-순서テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol