node.js - node express登陆,判断用户是否过期

 沉醉不知归路1222 发布于 2022-11-01 18:39

问题1 用户授权登陆之后 如何保存登陆信息
问题2 如果用户打开一个页面一直没动 身份已经过期 页面上有一个按钮的 用户再点这个按钮怎么知道用户身份已经过期 禁止它操作
问题3 使用vue的路由单页 页面并没有刷新 express该如何判断用户切换页面的时候 身份是否过期

3 个回答
  • req.session.user = user ,路由里判断是否过期,use(flash())作为消息传递

    2022-11-02 20:37 回答
  • 登陆信息这种直接存cookie吧,每次请求你的node都可以拿到cookie,然后写一个中间件做cookie的校验就好了

    2022-11-02 20:37 回答
  • express-session
    在Express4.x版本之后,session和cookies等模块不再包含在Express框架中,需要单独添加相应模块。

    $ npm install express-session
    var session = require('express-session');
    var app = express();
    
    // ...
    
    app.use(session({
        // name: 设置 cookie 中,保存 session 的字段名称,默认为 connect.sid 。
        // store: session 的存储方式,默认存放在内存中,也可以使用 redis,mongodb 等。Express 生态中都有相应模块的支持。
        // secret: 通过设置的 secret 字符串,来计算 hash 值并放在 cookie 中,使产生的 signedCookie 防篡改。
        // cookie: 设置存放 session id 的 cookie 的相关选项,默认为(default: { path: '/', httpOnly: true, secure: false, maxAge: null })
        // genid: 产生一个新的 session_id 时,所使用的函数, 默认使用 uid2 这个 npm 包。
        // rolling: 每个请求都重新设置一个 cookie,默认为 false。
        // resave: 即使 session 没有被修改,也保存 session 值,默认为 true。
    }));

    例子:

    app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}))
    
    app.use(function(req, res, next) {
      var sess = req.session
      if (sess.views) {
        sess.views++
        res.setHeader('Content-Type', 'text/html')
        res.write('<p>views: ' + sess.views + '</p>')
        res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>')
        res.end()
      } else {
        sess.views = 1
        res.end('welcome to the session demo. refresh!')
      }
    })
    2022-11-02 20:39 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有