프로젝트에 JWT 설명
JWT란?
JSON WebToken(JWT)은 개방된 표준([RFC 7519])으로 각 분야에서 JSON 대상으로 정보를 안전하게 전송하는 치밀하고 자체적인 방식을 정의한다.이 정보는 디지털 서명을 거쳤기 때문에 검증하고 신뢰할 수 있습니다.JWT는 비밀(HMAC 알고리즘 사용)이나 RSA 또는 ECDSA의 공개 키/개인 키로 서명할 수 있습니다.
JSON 웹 토큰은 언제 사용해야 합니까?
JSON 웹 토큰이란 무엇입니까?
촘촘한 형식에서 JSON 웹 영패는 세 부분으로 구성되고 세 부분은 점
.
으로 구분된다. 각각:xxxxx.yyyyy.zzzzz
JWT In-Depth Knowledge
JWT Playground
응용 프로그램을 실행하려면 다음과 같이 하십시오.
기계에 nodeJS와 postman와 MongoDB를 설치해야 합니다.
응용 프로그램을 테스트하기 위해postman을 사용할 것입니다.모든 프런트엔드를 사용하여 동일한 기능을 수행할 수 있습니다.
몬godb 설치가 정확한지 확인해야 합니다.
git clone https://github.com/singhanuj620/probackend_jwt
npm install
npm run start
http://localhost:4000/register
사용자를 등록합니다.형식은 다음과 같습니다. 축하해!!!사용자가 데이터베이스에 성공적으로 저장되었습니다.
http://localhost:4000/login
로지나 사용자에게.형식은 다음과 같습니다. 축하해!!!사용자가 응용 프로그램에 성공적으로 로그인했습니다.
너는 지금 비밀 노선에 들어갈 수 있다
http://localhost:4000/dashboard
기왕 우리가 응용 프로그램의 사용을 완성한 이상 JWT가 백엔드에서 어떻게 일을 하는지 알아보자.🙌🙌🙌이 응용 프로그램의 JWT 작업 방법
우리는 유행하는 jwt 라이브러리를 사용하여 영패를 인코딩하고 디코딩하고 있습니다.자세한 내용은 JWT NPMJS를 참조하십시오.
암호화bCryptJS
이 절차에서는 jwt를 사용합니다.
사용자가 로그인한 시기
데이터베이스에서 사용자를 찾을 것입니다. 그리고 bCryptJS를 사용하여 비밀번호를 검증할 것입니다. 만약 모든 것이 정상이라면, jsonwebtoken 라이브러리를 사용하여 새로운 영패를 생성할 것입니다.
다음과 같은 세 가지 매개변수가 있습니다.
const token = jwt.sign(
{
user_id: user._id, email
},
process.env.SECRET_KEY,
{
expiresIn: "2h"
}
);
그리고 이 영패를 앞쪽 쿠키에 전달하거나 저장합니다.우리는 cookie-parsernpm 라이브러리를 사용하여 이 일을 완성하고 있습니다.const options = {
expires: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
httpOnly: true
}
res.status(200).cookie('token', token, options).json({
success: true,
token,
user
});
알겠습니다. 현재 사용자가 로그인했습니다. 그러나 생성된 영패가 권한을 부여받은 사용자라는 것을 어떻게 검증해야 합니까? 그리고 그 / 그녀가 비밀 루트에 접근할 것을 요청하는 것이 허용되는지?🙄🙄🙄
JWT 토큰을 확인하는 중💥💥💥
로그인한 사용자가 비밀 루트에 접근하려고 시도할 때, 즉, 우리의 예
/dashboard
에서 중간부품auth가 영패를 검증할 것입니다.백엔드에서 사용자가 로그인할 때 쿠키에 설정된 영패를 가져와야 하기 때문입니다.
중간부품이 무엇인지 모르는 분들은 주의하세요.중간부품은 단지 두 항목 사이의 검사일 뿐이다.정상적으로 검사하면 다음 작업을 계속하십시오. 그렇지 않으면 되돌아갑니다.상상해봐, 파수꾼처럼😂.
누군가가 비밀 루트에 접근하려고 시도할 때마다 이 인증 중간부품은 이 요청이 쿠키에 영패가 있는지 확인합니다. (로그인한 사용자만 쿠키에 영패가 있는지 확인합니다.)없으면 로 돌아갑니다.
만약 쿠키에 영패가 있다면, 영패가 진실한지 검사할 것입니다.
어때요?🙄🙄
키는 무작위 문자열일 뿐이라는 것을 기억하십시오. 그렇습니다. 이것은 영패를 디코딩하고 영패에 인코딩된 데이터를 가져오는 데 도움이 될 것입니다.
어떤 데이터입니까?🙄🙄
사용자 id와 이메일 기억하기😉😉
만약 모든 것이 정상이라면 다음 수술을 진행할 것이다💯
try {
const decode = jwt.verify(token, process.env.SECRET_KEY);
req.user = decode;
}
catch (err) {
return res.status(403).send("Invalid Token")
}
return next();
저희가 뭘 배웠죠?
JWT 소개
감사합니다.🤗 💥🤩
Reference
이 문제에 관하여(프로젝트에 JWT 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/singhanuj620/jwt-explained-with-project-37en텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)