프로젝트에 JWT 설명

My Portfolio || ||

JWT란?


JSON WebToken(JWT)은 개방된 표준([RFC 7519])으로 각 분야에서 JSON 대상으로 정보를 안전하게 전송하는 치밀하고 자체적인 방식을 정의한다.이 정보는 디지털 서명을 거쳤기 때문에 검증하고 신뢰할 수 있습니다.JWT는 비밀(HMAC 알고리즘 사용)이나 RSA 또는 ECDSA의 공개 키/개인 키로 서명할 수 있습니다.

JSON 웹 토큰은 언제 사용해야 합니까?

  • 권한 수여
  • 정보 교환
  • JSON 웹 토큰이란 무엇입니까?


    촘촘한 형식에서 JSON 웹 영패는 세 부분으로 구성되고 세 부분은 점.으로 구분된다. 각각:
  • 수확대
  • 페이로드
  • 서명
  • 따라서 JWT는 일반적으로 다음과 같습니다.xxxxx.yyyyy.zzzzz
    JWT In-Depth Knowledge
    JWT Playground

    응용 프로그램을 실행하려면 다음과 같이 하십시오.


    기계에 nodeJSpostmanMongoDB를 설치해야 합니다.
    응용 프로그램을 테스트하기 위해postman을 사용할 것입니다.모든 프런트엔드를 사용하여 동일한 기능을 수행할 수 있습니다.
    몬godb 설치가 정확한지 확인해야 합니다.
  • 클론 프로젝트git clone https://github.com/singhanuj620/probackend_jwt
  • NPM 종속성 설치npm install
  • 서버 실행npm run start
  • 먼저 사용자를 등록합니다.http://localhost:4000/register사용자를 등록합니다.형식은 다음과 같습니다.

  • 축하해!!!사용자가 데이터베이스에 성공적으로 저장되었습니다.
  • 기존 사용자 로그인을 사용하여 jwt 작업 상황 검사http://localhost:4000/login로지나 사용자에게.형식은 다음과 같습니다.

  • 축하해!!!사용자가 응용 프로그램에 성공적으로 로그인했습니다.
    너는 지금 비밀 노선에 들어갈 수 있다http://localhost:4000/dashboard기왕 우리가 응용 프로그램의 사용을 완성한 이상 JWT가 백엔드에서 어떻게 일을 하는지 알아보자.🙌🙌🙌

    이 응용 프로그램의 JWT 작업 방법


    우리는 유행하는 jwt 라이브러리를 사용하여 영패를 인코딩하고 디코딩하고 있습니다.자세한 내용은 JWT NPMJS를 참조하십시오.
    암호화bCryptJS
    이 절차에서는 jwt를 사용합니다.
  • 첫 번째 사용자가 데이터베이스에 등록
  • 사용자가 로그인할 것입니다. 이것이 바로 이 사용자
  • 를 위해 새로운 영패를 생성하는 곳입니다.
  • 이 생성된 영패는 쿠키에 저장되어 비밀 루트에 접근할 때 이 jwt 영패의 확인을 검사합니다.
  • 정답!!!!
  • 사용자가 로그인한 시기


    데이터베이스에서 사용자를 찾을 것입니다. 그리고 bCryptJS를 사용하여 비밀번호를 검증할 것입니다. 만약 모든 것이 정상이라면, jsonwebtoken 라이브러리를 사용하여 새로운 영패를 생성할 것입니다.
    다음과 같은 세 가지 매개변수가 있습니다.
  • 이 영패에 어떤 데이터를 인코딩하고 싶습니까? 여기에 두 개의 키가 있는 대상, 즉 사용자 id와 이메일을 인코딩하고 싶습니다.
  • 임의의 임의 문자열 키 가능
  • 이 영패가 만기가 되는 시간, 본 예에서 나는 이미 이 영패의 2시간 수명을 분배했다.
  • 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 소개
  • 이github 리셋 프로그램을 어떻게 실행합니까
  • JWT 토큰
  • 생성 방법
  • JWT 토큰
  • 을 검증하는 방법

    감사합니다.🤗 💥🤩

    좋은 웹페이지 즐겨찾기