2017-05-10 5 views
0

현재 친구의 축구 팀을위한 맞춤 CMS를 만들고 있습니다. 백 엔드에Passport 및 JWT를 클라이언트 측에서 권한 부여에 사용하는 방법은 무엇입니까?

나는 데이터베이스 (MongoDB를)와 상호 작용하는 API를했습니다 : 아키텍처는 다음과 같습니다.

프런트 엔드에

나는 템플릿 엔진 핸들을 사용하여 페이지를 제공하는 특급 서버를했습니다.

현재 Passport와 JWT를 사용하여 API에 대한 요청을 인증했습니다. 로그인 할 때 JWT를 사용자의 쿠키 저장소에 저장합니다 (정적 페이지 및 SPA가 아니므로 로컬/세션 저장소에 액세스 할 수 없습니다).

내 문제는 내가 관리자 패널에 액세스하기위한 클라이언트 측에서 인증을 구현하는 방법을 고민하고 있다는 점이다. 클라이언트 측에서 JWT를 디코딩하고 사용자 역할을 읽은 다음 사용자가 관리자 인 경우 관리자 페이지가 표시되거나 프런트 엔드의 관리자 섹션에 액세스하라는 모든 요청을 API에 전달해야합니까? 그런 다음 확인 검사가 파일을 제공합니다.

도움을 주시면 감사하겠습니다. 감사합니다.

답변

0

나는 토큰 인증 방법을 사용하는 것이 아니라 하드 다시로드보다, XHR을 통해 요청을 향해 더 적합하다고 생각합니다. 접근 방식은 세션 기반 인증 전략에 더 적합한 것으로 보입니다. 여권 - 로컬을 사용하고 사용자 이름과 암호로 인증합니다. 일단 인증되면 사용자는 세션 변수에 서버 측을 저장합니다. 당신은 그 역할을 확인하고 서버 쪽을 리디렉션 할 수 있습니다.

토큰을 사용하려면 로컬 저장소에 저장 한 다음 관리자 패널에 먼저 토큰을 로컬 저장소에서 가져온 다음 토큰을 사용하여 서버에 GET 요청을 보내도록 스크립트를 만들 수 있습니다 헤더. 토큰이 유효한 경우 데이터를 보내 페이지를 채우십시오. 그렇지 않으면 오류를 다시 보내고 프런트 엔드에서 리디렉션합니다. 토큰의 유효성을 검사하면서 빈 관리자 패널을 표시하려면 요청이 완료 될 때까지 로딩 화면을 표시 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 인증을 위해 지역 전략을 사용한다면 클라이언트 프런트 엔드에서 쿼리하고 게시 할 수있는 보호 된 API 경로에 적합할까요? – makory

+0

@makory 예 보호 된 경로에 대한 미들웨어를 만들거나 세션의 사용자 개체에 대한 경로 기능 자체를 검사 할 수 있습니다. 사용자가 적절한 역할을하고 적절한 응답을 반환했는지 확인할 수 있습니다. –

관련 문제