保持用户登录态小结

知识小结

post 和 put 方法的总结

 put: 使用 put 发送多次请求,返回相同的内容,put 方法支持幂等性
 post: 使用 post 发送两次次请求,请求被处理两次,生成两个对象,使用 token 标记的方法来处理相同的 post 请求

web会话管理

1. session 会话机制

用户第一次访问应用时, server 端把 session 对象创建完成之后,通过 cookie 将 session 传给客户端,每一个用户对应一个 sessionId。第二次访问时,客户端通过 cookie 将 sessionId 携带给 server 端,服务器根据 sessionId 找到该用户对应的 session 对象只有在用户登录认证成功之后,并且往sesssion对象里面放入了用户登录成功的凭证,只要拿到用户的session对象,看它里面有没有登录成功的凭证,就能判断这个用户是否已经登录。当用户主动退出的时候,会把它的session对象里的登录凭证清掉。对于 session 而言,每次请求都会延长失效时间。

2. cookie 会话机制

Cookie是不允许垮域访问的。用户登录时,server 端生成登录凭证(加密),登录成功后,用户将登录凭证保存在户cookie,设置 cookie 的过期时间,用户进行后续请求时,携带 cookie(解密),若过期,重新登录。

3. token 会话机制

用户登录时,server 端生成加密的token,登录成功后,这个token在返回给客户端之后,后续请求都必须通过url参数或者是http header的形式,主动带上token,这样服务端接收到请求之后就能直接从http header或者url里面取到token进行验证。

Token的优点

Token作为用户认证的处理方式,有几个优点:

无状态,可扩展:不会在服务端存储用户的登录状态,可以很容易的实现服务器的增减
支持移动设备,对多类型客户端的支持良好
支持跨程序调用,各个接口之间的调用更方便
安全可靠

jsonwebtoken是用来生成token给客户端的,express-jwt是用来验证token的。
使用 jsonwebtoken 生成 token 时,代码如下:

let token = jwt.sign({
        _id: _id,
    }, "secret",{
        expiresIn : 60*60*24// 授权时效1天
    })

使用 express-jwt 验证 token 时,代码如下:

app.use((err, req, res, next) => {  // 校验 token
    if (err.name === "UnauthorizedError") {
        res.status(401).send({
            stat: 0,
            msg: "invalid token"
        });
    } else {
        next()
    }
})

补充:

  1. webpack 配置别名
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      '~common': resolve('common')
    }
  },
  1. 以为跨越导致 cookie 丢失,设置 withCredentials:true 之后,依然在客户端获取不到 cookie ,后来发现设置了 httpOnly, 导致 document.cookie 无法读取 cookie中的内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值