3
나는 express, passport 및 mysql db로 webapp를하고있다.Passport 세션 지속성
사용자가 내 데이터베이스의 테이블에 저장됩니다. 사용자가 로그인 할 때 응용 프로그램은 db의 사용자 탭에 항목을 찾고 사용자가 인증 된 경우 사용자를 인증합니다. 모든 것이 작동하지만 사용자가 브라우저를 닫으면 세션이 삭제되고 다시 로그인해야합니다. 사용자가 명시 적으로 로그 아웃 할 때까지 로그인하고 싶습니다.
express-mysql-session 플러그인을 사용해 보았는데 db 테이블에 세션을 저장하지만 그 이상은 저장하지 않습니다.
var passport = require("passport");
var LocalStrategy = require('passport-local').Strategy;
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var SessionStore = require('express-mysql-session');
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
passport.use(new LocalStrategy(function(username, password, done) {
process.nextTick(function() {
console.log('passport: veryfing user ...');
// sequelizejs looks for user...
tabUser.find({ where: {nick: username, passwd: password} }).success(function(myUser) {
if (myUser) {
console.log('passport: user authenticated !!');
return done(null, myUser);
} else {
console.log('passport: auth failed !!');
return done(null, false);
}
});
});
}));
app.use(session({key: 'session_cookie_name',
secret: 'session_cookie_secret',
store: new SessionStore(options)
}));
app.use(passport.initialize());
app.use(passport.session());
app.get('/login', function(req, res) {
res.sendfile('views/login.html');
});
app.post('/login', passport.authenticate('local', { successRedirect: '/loginSuccess', failureRedirect: '/loginFailure' }));
app.get('/account', ensureAuthenticated, function(req, res) {
res.render('account', { user: req.user });
});
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect('/login')
}
감사
고마워요! 그것은 나를 위해 일했습니다. maxAge 특성이 누락되었습니다;) – Ico