node.js - express-session实现登录验证中关于cookie的问题
仅有的幸福
仅有的幸福 2017-05-02 09:26:17
0
1
864

目前的情况是浏览器端存在一个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);
});

仅有的幸福
仅有的幸福

모든 응답(1)
滿天的星座

req.session의 값은 서버측에 저장되지 않습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!