2014-05-10 1 views
0

토큰 기반 인증과 함께 AngularJS를 사용하고 있으며 토큰을 헤더에 첨부하여 지속적인 '세션'을 유지 관리하는 것이 가장 좋습니다 요청. 나에게 문제를 설명하자 내가으로 실행했습니다는 :이 설치는 지금, 그러나 약간 단순화하는 방법을토큰을 기반으로하는 인증에서 토큰을 요청 헤더에 첨부하는 최상의 방법

이것은 :

  1. 사용자가 로그인을
  2. 백엔드에서 토큰, 사용자를 포함하는 사용자 개체를 반환 로그인 된 것으로 간주되고 토큰이 로컬 저장소에 저장됩니다.
  3. 사용자가 페이지를 새로 고치고 페이지가로드되고 각도가 초기화되며 사용자 개체와 토큰이 반환되지 않고 사용자가 토큰이 자동으로 첨부되지 않은 상태로 로그인 된 것으로 간주되지 않습니다 사용자의 요청에 따라
  4. 이제 각도가 초기화 되 자마자 localstorage에 토큰의 존재 여부가 있는지 확인하고, 발견 된 경우 토큰을 반환하고 토큰을 새로 고친 사용자 객체 인 httpInterceptor를 사용하여 요청에 첨부 된 토큰으로 백엔드에 대한 GET 요청을 만듭니다. 사용자는 다시 서명 된 것으로 간주됩니다

에 내가 알고 싶습니다 쿠키가 자동적으로 나의 백엔드는 직렬화 할 수있는 모든 요청에 ​​부착되어 있기 때문에이 가능 쿠키 기반 인증으로 4 단계에서 로그 아웃되는 사용자의 순간적인 섬광을 방지하는 방법입니다 쿠키를 반환하기 전에 렌더링 된 템플릿을 반환하고 초기화 된 시간에 아무런 지연없이 액세스하고로드 할 수있는 스크립트 태그 내에서 json 형식으로 렌더링 된 템플릿에 사용자 객체를 연결합니다.

토큰의 문제점은 클라이언트의 localStorage에있는 동안 페이지가 새로 고쳐질 때 요청에 자동으로 첨부되지 않는다는 것입니다. 이것은 앵귤러가 초기화 된 후 사용자가 http 요청을하고 첨부 된 토큰과 함께이 추가 헤더 필드를 첨부하는 httpInterceptor를 lodaded했을 때에 만 첨부됩니다.

localStorage에 저장된 토큰을 모든 요청의 헤더에 항상 자동으로 첨부하거나 가능한 한 현재의 방식대로 사용할 수 있습니다. 쿠키에 토큰을 저장할 수 있다고 생각하지만 토큰 기반 인증의 목적을 실제로 무너 뜨릴 것입니다.

내가 잘못 접근하고 있습니까?

답변

0

귀하의 접근 방식은 옳지 만 resolve phase of your routes이라는 서비스 초기화 중 토큰을 확인하고 새로 고침해야합니다. 초기 플래시를 방지해야합니다.

관련 문제