目前的情況是瀏覽器端存在一個cookie,名字就是config.session.key('myblog')但不論登入與否,他的值永遠不會變,而且如果登入了,關掉瀏覽器再開啟頁面,還是會在"登入"狀態. 請問這是如何實現的? 個人理解的驗證機制應該是改了cookie的值,發送到伺服器端,伺服器確認後返回已登入. 請各位dalao解惑
index.js
app.use(session({
name:config.session.key,//设置cookie中保存session id的字段名称
secret:config.session.secret,//通过设置 secret 来计算 hash 值并放在 cookie 中,使产生的 signedCookie 防篡改
resave:false,//
saveUninitialized:false,//设置为 false,强制创建一个 session,即使用户未登录
cookie:{
maxAge:config.session.maxAge,//过期时间
},
store:new MongoStore({//将session存储到mongodb
url:config.mongodb//mongodb地址
})
}));
signin.js 使用者登入
router.post('/', checkNotLogin, function(req, res, next) {
var name = req.fields.name,
password = req.fields.password;
UserModel.getUserByName(name)
.then(function(user){
if(!user){
req.flash('error','用户不存在');
return res.redirect('back');
}
// 密码是否匹配
if(sha1(password)!==user.password){
req.flash('error','密码错误');
return res.redirect('back')
}
req.flash('success','登录成功');
delete user.password;
req.session.user = user;
res.redirect('/posts');
})
.catch(next);
});
cookie的值並不改.req.session儲存在伺服器端.