Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- array
- 백엔드공부
- 그래프탐색
- 백엔드
- java
- 원격근무
- 내돈내산
- Node.js
- YBM전화영어
- Queue
- 탄력근무
- OAuth
- OpenAPI프로젝트
- BFS
- 제로베이스
- 백엔드스쿨
- maven
- 교육철학과 교육사
- 최단경로문제
- Spring
- 자바스크립트
- npm
- 탐색알고리즘
- 자료구조
- webServlet
- 프로젝트진행
- JavaScript
- 시급합니다
- 전화영어
- 개발자
Archives
- Today
- Total
인생자취
TIL | Passport 본문
Passport 정의
- Passport.js : 여러 플랫폼에서의 가입 정보 중 username과 password를 가져와서 로그인 구현을 쉽게 해놓은 OAuth 패키지로, Node.js용 요청을 인증하는 express 호환 미들웨어이다.
Passport Strategies
- Passport는 앱의 용도에 맞는 전략을 configuration 파일에 미들웨어로 작성하고 사용해야한다.
- 미들웨어에 작성하는 코드는 다음과 같이 작성한다.
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.verifyPassword(password)) { return done(null, false); }
return done(null, user);
});
}
));
- 패캠강의 내용에 따르면 passport는 플랫폼에 관계없이 비슷한 방법으로 구현된다고 한다.
Passport Sessions
- Passport는 로그인 세션을 유지시켜준다. 세션 유지를 위해서는 인증된 사용자의 정보를 세션에 전송/저장이 가능한 데이터로 만드는serialized data로 만들어 주거나, 이와 반대인 deserialized 시켜준다.
- Passport는 사용자의 기록이 저장되는 방식에서 어떤 제약이 없지만, 꼭 필요한 serialization/deserialization logic을 passport 함수로 제공해야한다.
- 최소(?)로 작성해야 하는 코드는 다음과 같다.
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function (err, user) {
done(err, user);
});
});
Middleware
- Express나 Connect-based 앱에서 Passport를 사용하기 위해 passport.initialize() 미들웨어가 필요하다.
- 구현하는 앱에서 로그인 세션을 계속 유지하려면, passport.session() 미들웨어가 반드시 필요하다.
- 이와 관련하여 구현하는 예시는 다음과 같다.
var app = express();
app.use(require('serve-static')(\_\_dirname + '/../../public'));
app.use(require('cookie-parser')());
app.use(require('body-parser').urlencoded({ extended: true }));
app.use(require('express-session')({ secret: 'keyboard cat', resave: true, saveUninitialized: true }));
app.use(passport.initialize());
app.use(passport.session());
Autheticate Requests
- Passport는 autheticate() 함수를 제공한다. 이 함수는 인증(authenticate) 요청 라우트 미들웨어에 사용된다.
- 이와 관련한 예시는 다음과 같다.
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
});
Strategies
- Passport.js
- 공식 문서에 다양한 예시가 존재한다. 전략에 맞게 작성하면 된다.
*공부한 내용을 기반으로 작성하여, 오기된 정보가 있을 수도 있으니 오류가 있으면 댓글로 남겨주시면 감사드리겠습니다!
'개발 > Dev | 웹개발' 카테고리의 다른 글
TIL | UX, DevEx 개선을 위한 수고로움 (0) | 2023.03.14 |
---|---|
TIL | WEB / HTTP STATUS CODE / Software Architecture and Design (1) | 2022.09.23 |
TIL | Git Command 총정리 (0) | 2022.08.19 |
TIL | 로그인 프로젝트 2 (0) | 2022.07.31 |
TIL | 로그인 프로젝트 1 (0) | 2022.07.31 |
Comments