Node. js 모듈 의 [passport] 제3자 [Github] 감 권 (2)
npm i connect-mongo --save-dev
npm i passport --save-dev
npm i passport-github --save
2. 모듈 및 기타 의존 모듈 도입
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var passport = require('passport');
var GithubStrategy = require('passport-github').Strategy;
3. 직렬 화 와 반 직렬 화 리 셋 추가
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
UserModel.findById(id, function(err, user) {
done(err, user);
})
});
4. Github 인증 정책 추가
passport.use(new GithubStrategy({
clientID:'【Your ClientID】',
clientSecret:'【Your Secret】',
callbackURL:'【Your CallBack】'
},function(accessToken,refreshToken,profile,done) {
UserModel.findOne({
githubId: profile.id
}, function(err, user) {
if (err) {
return done(err);
} else {
if (!user) {
user = new UserModel({
githubId:profile.id,
username:profile.username
});
user.save();
return done(null, user);
}else{
return done(null, user);
}
}
});
}));
5. connect - mongo 로 저장
app.use(session({
resave: false,
saveUninitialized: true,
cookie: {
maxAge: 36000000 /* : */
},
secret: "robin shop",
store: new MongoStore({
url:'mongodb://localhost/【Your MongoDB】'
})
}));
6. 패 키 징 권한 검사 미들웨어
var isAuthenticated = function(req, res, next) {
if (req.isAuthenticated() || (req.user && req.user.provider)) {
return next();
}
res.redirect('/login');
}
7. Github 로그 인 루트 와 리 셋 설정
app.get('/auth/github', passport.authenticate('github'));
app.get('/auth/github/callback', passport.authenticate('github', {
failureRedirect: '/login'
}), function(req, res) {
res.redirect('/users');
});
8. 소각 세 션 게재
app.get('/logout', function(req, res) {
req.logout();
res.redirect('/login');
});
9. 권한 제한
app.use('/users', isAuthenticated, users);
app.use('/products', isAuthenticated, products);
app.use('/upload', isAuthenticated, upload);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Node.js를 AWS서버에서 사용하는 실습간단한 예제와 함께 AWS에서 Node.js를사용하는 법을 배워보도록 하겠다. 해당 github에 있는 레포지토리로 사용을 할 것이다. 3000번 포트로 Listen되는 예제이고 간단히 GET, POST, DELET...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.