본문 바로가기

개발

[node.js] authentication, passport-local-mongoose 모듈 사용법

passport-local-mongoose 모듈은 passport 이용한 local로그인을 간편하게 해주는 Mongoose 플러그인이다.

공식 문서 : github.com/saintedlama/passport-local-mongoose#api-documentation

(이 글은 위의 공식 문서를 번역한 것입니다.)

1. 설치하기

Passport-local-mongoose를 사용하기 위해서는, passport와 mongoose도 설치되어 있어야 한다.

 

2. 사용하기

1. Passport-Local Mongoose 플러그인하기

우선 User 스키마에 Passport-Local Mongoose 플러그인 해야한다. User 어떻게 디자인하든지는 상관 없다. Passport-Local Mongooes가 User username, hash, 그리고 salt 필드를 추가한다. 각각 username, 해쉬된 패스워드, salt값이 저장된다. 

그리고 Passport-Local Mongoose 스키마에 몇몇 메소드도 추가한다. 

2. Passport/Passport-Local 설정하기

Passport Passport-Local 우선 설정해야 한다. 참고: ibdev.tistory.com/3, www.passportjs.org/docs/

위의 링크를 참고해서 Passport/Passport-Local 설정이 완료되었을 ,

Passport-Local Mongoose LocalStrategy serializeUser/deserializeUser 함수를 실행할   도움을 준다. 

 

위의 코드를 사용할 때는 mongodb mongoose 연결되어있는지 확인해야 한다.

 

<Passport/Passport-Local 설정 간소화하기>

passport-local-mongoose에는 'createStrategy'라는 helper method 스키마에 추가되었다.

 

User.authenticate( ) 대신 User.createStrategy( ) 쓰는 이유:

기존의 User.authenticate( ) 예를들어 usernameField 이름을 username 아니라 email으로 별도의 코드가 필요한데, User.createStrategy( ) 쓰게되면 별도의 코드를 작성할 필요 없이 자동으로 세팅이 된다.

 

<async/await>

5.0.0버전부터 passport-local-mongoose에서 async/await 사용할 있게 되었다. serializeUser deserializeUser 제외한 모든 인스턴스와 정적 메소드에서 사용가능하다.

 

<option>

passport-local mongoose플러그인을 실행시킬 추가적인 옵션을 지정할 있다.

 

3. API에 관하여

<여러 instance 메서드들>

setPassword, changePassword, authenticate, resetAttempts 여러 메서드가 있다.

https://www.npmjs.com/package/passport-local-mongoose 참고하기

...

 

<Callback Arguments>

...

<Error Handling>

...

 

<정적 메서드>

모델 생성자에 있다. 예를들어, createStrategy 사용할 때는

 

정적 메서드 종류

  • authenticate( ) :  Passport LocalStrategy에서 사용되는 함수를 생성한다.
  • serializeUser( ) : Passport에서 세션으로 유저를 serialize하기위해 사용되는 함수를 생성한다
  • deserializeUser( ) : Passport에서 세션으로 유저를deserialize하기위해 사용되는 함수를 생성한다
  • register(user, password, cb): 주어진 패스워드로 새로운 유저 인스턴스를 등록할 편리한 메서드. username unique한지 확인해야한다. 참고: https://github.com/saintedlama/passport-local-mongoose/tree/master/examples/login
  • findByUsername( ) : unique username으로 어떤 유저 인스턴스를 찾을 편리한 메서드
  • createStrategy( ) : 이미 설정완료 LocalStrategy인스턴스를 만들어준다

'개발' 카테고리의 다른 글

공인 IP, 사설 IP  (0) 2021.05.01
도커 사용법  (0) 2021.04.30
cURL 명령어  (0) 2021.04.06
[node.js] passport 모듈 사용법  (0) 2021.04.06
[node.js] 서버 개발 시 쓰이는 npm 모듈들  (0) 2021.04.04