사용자가 인증(로그인) 후 쇼핑몰의 경우 상품을 보려고 페이지를 넘긴 다던지 장바구니 이동 등 서버로 부터 계속 요청을주고 받게 될 경우 인증을 계속 다시 해줘야 한다.
이는 사용자를 굉장히 번거롭게하고 불편하기 때문에
이방법을 해소하기 위해 인가(Authorization)라는 방법을 사용한다.
인가(Authorization)는 유저가 요청하는 request를 실행할 수 있는 권한이 있는 유저인가를 확인하는 절차 이다.
인증(로그인)시 유저 정보를 확인할 수 있는 token을 생성하여 request를 보낼때 첨부하여 보낸다.
JWT(JSON Web Tokens)
1. 사용자 인증(로그인)
2. 사용자 로그인하여 인증 받으면 DB에서 공개되도 문제 되지않는 user의 ID 를 token을 생성할 때 정보를 담는다
3. token 생성 방법
encoded_jwt = jwt.encode({'user id': 유저로부터 입력 받은 ID }, 'secret', algorithm='HS256')
# algorithm='HS256 토큰을 생성 할때 사용할 알고리즘 방식
4.로그인 성공시 토큰을 생성하게 만들고 토큰이 생성됨
encoded_jwt를 출력하면 문자열로 토큰이 생성된다.
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIGlkIjoxM30.wfS5cXUuXL0AEWxrzyXWTFuTK3XpRkQU8Lc1HjyXQec"
jwt.decode( '암호화토큰', 'secret', algorithms='HS256')
암호화된 토큰을 첫번째 인자로 받고 두번째 인자는 암호화했던 문자열, 세번째는 암호화했던 알고리즘 방식을 입력하면 복호화됨
인코딩할때와 다른점은 algorithm 방식에 s를 붙여 복수형으로 해야 한다는 점 이다.
jwt token으로 인코딩한 코드
decode한 토큰 값