Nodejs 및 mongoDB를 사용한 인증 - 4부
이 자습서에서는 사용자가 인증(로그인)될 때까지 일부 경로를 보호하는 방법을 살펴보겠습니다. 나와 함께있어.
시작 프로젝트
이 자습서의 시작 프로젝트는 얻을 수 있습니다here.
git clone --branch login-endpoint https://github.com/EBEREGIT/auth-backend
를 실행합니다. cd auth-backend
폴더로 이동합니다. npm install
. nodemon index
. 그러면 서버가 시작됩니다엔드포인트 2개 만들기
인증 작동 방식을 표시하려면 2개의 엔드포인트가 필요합니다. 다음 끝점을 복사하여 마지막 줄 바로 앞에
app.js
파일에 붙여넣습니다.// free endpoint
app.get("/free-endpoint", (request, response) => {
response.json({ message: "You are free to access me anytime" });
});
// authentication endpoint
app.get("/auth-endpoint", (request, response) => {
response.json({ message: "You are authorized to access me" });
});
엔드포인트가 Postman 또는 브라우저에서 작동하는지 자유롭게 확인하십시오.
인증 기능 만들기
여기서는 사용자가 인증될 때까지 특정 끝점을 보호할 수 있는 기능을 만들고 있습니다.
auth.js
jasonwebtoken
const jwt = require("jsonwebtoken");
module.exports = async (request, response, next) => {
}
try...catch...
블록을 사용하여 사용자가 로그인했는지 확인합니다.
try {
} catch (error) {
response.status(401).json({
error: new Error("Invalid request!"),
});
}
try{}
블록에서 authorization header
에서 인증 토큰을 가져오겠습니다.
// get the token from the authorization header
const token = await request.headers.authorization.split(" ")[1];
//check if the token matches the supposed origin
const decodedToken = await jwt.verify(
token,
"RANDOM-TOKEN"
);
decodedToken
의 세부 정보를 user
상수로 전달합니다.
// retrieve the user details of the logged in user
const user = await decodedToken;
user
를 전달합니다.
// pass the the user down to the endpoints here
request.user = user;
마지막으로 다음과 같이 끝점으로 가는 길을 엽니다.
// pass down functionality to the endpoint
next();
Our
auth.js
file now looks like this:
const jwt = require("jsonwebtoken");
module.exports = async (request, response, next) => {
try {
// get the token from the authorization header
const token = await request.headers.authorization.split(" ")[1];
//check if the token matches the supposed origin
const decodedToken = await jwt.verify(token, "RANDOM-TOKEN");
// retrieve the user details of the logged in user
const user = await decodedToken;
// pass the the user down to the endpoints here
request.user = user;
// pass down functionality to the endpoint
next();
} catch (error) {
response.status(401).json({
error: new Error("Invalid request!"),
});
}
};
엔드포인트 보호
이것은 최종적이고 간단한 단계입니다. 다음과 같이 인증 기능을
app.js
파일로 가져오는 것으로 시작합니다.
const auth = require("./auth");
이제
app.js
파일의 인증 끝점으로 이동하여 auth
를 두 번째 인수로 추가합니다.
// authentication endpoint
app.get("/auth-endpoint", auth, (request, response) => {
response.json({ message: "You are authorized to access me" });
});
그리고 그게 다야. 그것이 우리가 그 경로를 보호하기 위해 필요한 전부입니다. 테스트해 봅시다
테스트
If the user is not logged in
If the user is logged in
postman
에서 새 탭 열기 bearer token
를 선택합니다.token
필드에 토큰을 붙여넣고 요청CORS
마지막 한가지!
CORS 오류를 처리해야 합니다. 이렇게 하면 프런트엔드의 사용자가 아무 문제 없이 생성한 API를 사용할 수 있습니다.
app.js
파일dbConnect()
줄 바로 아래에 다음 코드를 추가합니다.
// Curb Cores Error by adding a header here
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content, Accept, Content-Type, Authorization"
);
res.setHeader(
"Access-Control-Allow-Methods",
"GET, POST, PUT, DELETE, PATCH, OPTIONS"
);
next();
});
그리고 이것으로 당신은 nodejs 인증 챔피언입니다!!!
결론
이 부분에서는 nodejs 및 mongoDB를 사용한 인증에 대한 이 시리즈를 마무리합니다. 등록 및 로그인 끝점을 만드는 방법과 적절하다고 판단되는 경우 끝점에서 보호를 만드는 방법을 살펴보았습니다.
모든 코드를 찾았습니다here.
다음으로 에 대해 살펴보겠습니다. 곧 봐요
Reference
이 문제에 관하여(Nodejs 및 mongoDB를 사용한 인증 - 4부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ebereplenty/authentication-with-nodejs-and-mongodb-part-4-4p37텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)