2015-01-14 4 views
0

내 expressjs, nodejs 및 angularjs 응용 프로그램에서 jsonwebtoken 및 express-jwt를 사용하여 사용자 인증을 위해 json 웹 토큰을 구현하려고합니다. 나는 다양한 기사와 튜토리얼을 읽었으며 이제 나는 다소 혼란 스럽다.브라우저를 닫은 후에도 jwt를 사용하여 사용자를 기억하는 방법은 무엇입니까?

  1. 헤더 : I가 JWT 대한 이해 것의

    첫째는 시간에 의해 분리 된 세 부분으로 구성되어있는 JWT와 알고리즘을 설명합니다.

  2. 페이로드 : 그래서 모든 요청이 서버에서 검증 토큰으로 구성되어

헤더와 페이로드에 따라 서명 : 발행 회사, 고객, 유통

  • 서명 : 정보를 포함합니다. this 문서에 따르면 발급자가 요청하는 사람입니다. 사용자 인증의 경우 사용자는 발급자입니다. 지금 요청 헤더에 토큰을 검증, express-jwt 미들웨어를 사용하여 디코딩 된 토큰은 req.user에 연결 :

    app.use(expressJwt({ secret: jwtSecret }).unless({ path: [ '/login' ]})); 
    

    이 얼마나 페이로드의 길이 될 수 있는가? 어떻게 그리고 어디서 토큰을 클라이언트쪽에 저장하면 브라우저가 닫힌 후에도 내 세션이 유지됩니다. 사용자가 로그 아웃하지 않는 한, 페이스 북의 "로그인 상태 유지"처럼? 토큰이 만료되면 사용자가 다시 로그인하라는 메시지를 표시하지 않으므로 사용자가 로그 아웃하지 않으면 토큰을 갱신해야합니다.

  • 답변

    2

    영구 쿠키 또는 browser local storage에 JWT를 저장할 수 있습니다. 탑재량의 길이는 JWT 자체에 의해 제한되지 않고 저장 장치에 의해 제한됩니다. 긴 토큰은 요청에 상당한로드를 추가하거나 추가 긴 HTTP 헤더를 허용하기 위해 추가 서버 구성이 필요할 수 있음을 기억하십시오.

    JWT 토큰이 만료되지 않도록하려면 발행 할 때 만료 시간을 적절히 설정하십시오. 사용자가 JWT를 해지 할 방법이 없기 때문에 JWT가 유출되는 경우 보안 위험이 추가됩니다.

    +0

    JWT를 지속적으로 사용하고 싶습니다. 그가 시스템에서 로그 아웃하지 않는 한 로그인을 요구하지 않기 때문에. 우리가 localStorage에 저장하면 브라우저가 닫힌 후에 jwt가 파괴됩니까? – Pravin

    +0

    w3schools 페이지에 설명 된대로 : HTML 로컬 저장소는 클라이언트에 데이터를 저장하기위한 두 가지 객체를 제공합니다. (1) window.localStorage - 만료 날짜가없는 데이터를 저장합니다. (2) window.sessionStorage - 하나의 세션에 대한 데이터를 저장합니다 탭이 닫히면 사라짐). 그래서 - 브라우저 창을 닫을 때 localStorage가 손실되지 않습니다. –

    +0

    오 그래 ... 고마워 ... – Pravin