nodejs 여권 인증 토큰
웹 응용 프로그램과 API 공급자로 사용하려는 nodejs 응용 프로그램을 작성 중입니다. 사용자가 인증되면 해당 사용자에게 후속 요청에 사용할 토큰을 할당하고 싶습니다. 세션에서 토큰을 사용하여 사용자를 직렬화 및 역 직렬화하기 때문에 웹 응용 프로그램의 패스포트에서 잘 작동합니다. 그러나 API 요청에 응답 할 때 세션 정보를 저장하기 위해 설정할 쿠키가 없습니다. 이상적으로, passport는 세션과 요청 본문 모두에서 토큰을 찾습니다. 이를 수행하기 위해 여권을 구성하는 방법이 있습니까?
모든 요청에 액세스 토큰을 사용하기 만하면됩니다. 세션을 사용할 필요가 없습니다. 다음은 워크 플로우입니다.
POST /signin
- 사용자 이름과 암호는 클라이언트 요청에 게시됩니다.
- 서버는 패스포트의 로컬 전략을 사용하여 사용자를 인증합니다. passport-local을 참조하십시오 .
- 자격 증명이 유효한 사용자를 나타내는 경우 서버는 일부 생성기가 생성 한 액세스 토큰을 반환합니다. node-jwt-simple 은 좋은 선택입니다.
- 자격 증명이 잘못된 경우로 리디렉션하십시오
/signin
.
클라이언트가 권한 부여 서버에서 액세스 토큰을 받으면 서버의 보호 된 리소스에 요청할 수 있습니다. 예를 들면 :
GET /api/v1/somefunction?token='abcedf'
- 클라이언트는 token 인수를 사용하여 일부 서버 API를 호출합니다.
- 서버는 패스포트의 전달자 전략을 사용하여 토큰을 인증합니다. passport-http-bearer를 참조하십시오 .
참고 문헌
passport.js 및 express.js (node.js)를 사용하여 안전한 oauth API 만들기
bnuhero가 언급했듯이 세션이 필요하지 않습니다 (이 접근 방식에도 장점이 있음). 여기에 제가 시작하는 상용구 프로젝트가 있습니다 : https://github.com/roblevintennis/passport-api-tokens
여기에 대안이 있고 따라하기 쉬운 혀가 있습니다 (하지만 세션을 사용합니다). 좋은 상호 참조가 될 수 있습니다 : http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local
그리고 관련 참조 : http://mherman.org/blog/2013/11/11/user-authentication-with-passport-dot-js/
nodejs의 passport에서 isAuthenticated () 메소드를 사용할 수 있습니다. 모든 경로에서 if (req.isAuthenticated ()) 확인할 수 있으며 이미 인증 된 경우 경로에 액세스 할 수 있거나 else 블록에서 다른 실행을 리디렉션하거나 수행 할 수 있습니다. Passport에서는 성공적인 로그인을 위해 done (null, user)을 반환 할 수 있으며 세션이 끝날 때까지 쿠키에 데이터를 저장합니다. 사용자에서는 이메일, 비밀번호와 같은 사용자에 대한 정보를 볼 수 있습니다.
app.get('/home', (req, res) =>{
if(req.isAuthenticated()){
//render home page
} else {
// go back to the login page or throw soome error
}
})
참고 URL : https://stackoverflow.com/questions/17397052/nodejs-passport-authentication-token
'programing' 카테고리의 다른 글
C ++ 11 범위 기반 for 루프에서 요소의 위치를 찾으십니까? (0) | 2020.11.01 |
---|---|
ng-click 함수에 바인딩 된 변수를 어떻게 전달할 수 있습니까? (0) | 2020.11.01 |
Linq Select에서 튜플 만들기 (0) | 2020.11.01 |
JavaScript를 사용하여 데스크탑 개발을 할 수 있습니까? (0) | 2020.11.01 |
Eclipse 변경 프로젝트 파일 위치 (0) | 2020.11.01 |