티스토리 뷰
😎 2021.04.30 - [WEB] - 쿠키, 세션, passport.js
지난시간 localstrategy 복습
인증 요청
이후 모든 요청
OAuth2.0
delegating user authentication to the service that hosts the user account, and authorizing third-party applications to access the user account.
이부분은 나중에 까먹으면 생활코딩 OAuth2.0 강의를 또 듣자...
google login 간단한 구현 코드
1편과 동일한데 strategy 만 local => google로 바꿨다.
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
//db (세션저장소로 사용할)
const lowdb = require('lowdb');
const FileSync = require('lowdb/adapters/FileSync');
const adapter = new FileSync('./db/session.json', { defaultValue: { sessions: [] }});
const db = lowdb(adapter);
//session
const session = require('express-session')
const LowdbStore = require('lowdb-session-store')(session);
//passport
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
const googleConfig = require('./google.json'); //client ID, client Secret 등의 정보 저장한 json
app.use(express.urlencoded({ extended: false }));
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
store: new LowdbStore(db.get('sessions'), {
ttl: 86400
}),
}))
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, done) {
console.log("serializeuser");
done(null, user.name);
});
passport.deserializeUser(function(id, done) {
console.log("deserializeuser");
done(null, id.givenName);
});
passport.use(new GoogleStrategy({
clientID: googleConfig.web.client_id,
clientSecret: googleConfig.web.client_secret,
callbackURL: googleConfig.web.redirect_uris[0]
},
function(accessToken, refreshToken, profile, done) {
console.log(accessToken,refreshToken,profile)
done(null,profile);
}
));
//server logic
app.get('/', (req, res) => {
res.send(req.user? `welcome ${req.user} ~!` : "who are you?");
});
app.get('/login', (req, res) => {
res.sendFile(__dirname + '/passport.html');
});
app.get('/login/google',
passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/plus.login']}));
app.get('/login/google/callback',
passport.authenticate('google', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
});
server.listen(3000, () => {
console.log('listening on 3000 port');
});
passport.js 구글 인증 과정
'시리즈 > Web' 카테고리의 다른 글
authorization 방법들 비교 (쿠키, 세션, JWT) (0) | 2021.05.07 |
---|---|
쿠키, 세션, passport.js (0) | 2021.04.30 |
proxy와 CORS 2편 (0) | 2021.04.22 |
proxy와 CORS 1편 (1) | 2021.04.22 |
Real Time Web 선택지 비교 (0) | 2021.02.16 |
댓글
공지사항
최근에 올라온 글