1. 패스포트로 로그인하기
- 패스포트는 노드에서 사용할 수 있는 사용자 인증 모듈이다.
- 사용 방법이 간단하고 사용자 인증 기능을 독립된 모듈 안에서 진행할 수 있도록 도와준다.
- 엑스프레스 환경에서는 미들웨어로 끼워넣을 수 있어서 더 간단하게 사용할 수 있다.
- 패스포트의 목적은 클라이언트에서 요청한 인증 정보로 사용자 인증을 하는 것이다.
- 인증 이외의 기능은 다른 코드로 만들어야 한다.
- 패스포트의 인증 방식은 'strategy'로 만들어져 있기 때문에 어떤 방식을 선택하느냐에 따라 방식이 달라진다.
- DB 데이터와 비교하는 로컬 인증 방식, 페북/트위터 등을 이용하는 OAuth 인증 방식 등이 있다.
패스포트의 기본 사용 방법
- 아래와 같이 인증에 성공하면 콜백함수를 호출하고 함수 안에서 redirect()메서드를 호출하면서 다른 패스로 이동하게 하는 방법을 쓴다.
route.route('login').post(passport.authenticate('local',
{
successRedirect: '/',
failureRedirect: '/login'
}
));
- 이렇게 간단하게 해결이 가능한 경우에는 flash() 메서드를 사용해서 간단히 에러를 출력할 수도 있지만 보통은 복잡한 기능을 만들기 때문에 커스텀 콜백함수를 만들어서 사용한다.
router.route('/login').get(function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if(err) { return next(err); }
if(!user) {return res.redirct('/login'); }
req.login(user, function(err) {
if(err) { return next(err); }
return res.redirect('/users/' + user.username);
});
})(req, res, next);
});
이 함수에는 클로저라는 개념과 외부, 내부 함수의 변수 개념이 녹아있다.
https://opentutorials.org/course/743/6544
이 참조링크 내용의 마지막 예제부분과 통한다고 생각하면 된다.
가장 바깥의 (req, res, next)를 사용하여 내부 함수의 지역변수처럼 사용하는 것이다.
https://www.nextree.co.kr/p4150/
그리고 이러한 형태의 함수를 익명즉시실행 함수라고 부른다고 한다.
자바스크립트의 위와 같은 특성 때문에 발생하는 문제이다.
패스포트의 스트래티지 설정과 검증 콜백
- 로컬인증방식, OAuth인증, OpenId 인증 등 인증방식에는 여러가지가 있어서 그것을 미리 설정해둔 것이 패스포트의 스트래티지이다.
- https://www.passportjs.org/features/
- 공식 passport 사이트에 따르면 500개가 넘는 인증방식을 제공한다.
- 필요할 때 찾아서 사용하면 될 것 같다.
- 내가 공부하는 코드에는 local 과 jwt가 사용되었다.
'Backend > node.js' 카테고리의 다른 글
9. 서버 배포에 도움이 되는 기능 (0) | 2022.04.20 |
---|---|
7. express 프로젝트를 모듈화 하기 (0) | 2022.04.19 |
6. Postgresql을 node.js에 연결하기 (0) | 2022.04.19 |
5. 노드로 웹 서버 만들기 (0) | 2022.04.19 |
4. 노드의 기본 기능 (1) | 2022.04.19 |