node.js身份验证

身份验证

HTTP 是一种没有状态的协议,也就是它并不知道是谁访问。客户端用户名密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证

session

思想

  1. 客户端用户名跟密码请求登录
  2. 服务端收到请求,去库验证用户名与密码
  3. 验证成功后,服务端种一个cookie或发一个字符到客户端,同时服务器保留一份session
  4. 客户端收到 响应 以后可以把收到的字符存到cookie
  5. 客户端每次向服务端请求资源的cookie会自动携带
  6. 服务端收到请求,然后去验证cookie和session,如果验证成功,就向客户端返回请求的库数据

Session存储位置: 服务器内存,磁盘,或者数据库里
Session存储内容: id,存储时间,用户名等说明一下登录的用户是谁
客户端携带 : cookie自动带,localStorage手动带

如何保存信息给浏览器

前端种:
cookie/localstorage
后端种:
服务器给浏览器种cookie: cookie-parser
服务器给浏览器种cookie的同时在服务器上生成seesion: cookie-session

cookie-session

安装引入

let cookieSession = require('cookie-session')

配置中间件

app.use(cookieSession({
 name:'保存到服务器的session的名字',
  keys:[必传参数,代表加密层级],
  maxAge:1000 //保留cookie的时间
}))

种cookie,备份session

req.session.key=value

读cookie对比session

req.session.key  返回true

删除cokkie、session

delete req.session.key 
req.session.key = undefined

token

思想

在服务端不需要存储用户的登录记录,全部发给客户端有客户端自己存(cookie,local)

  1. 客户端使用用户名跟密码请求登录
  2. 服务端收到请求,去验证用户名与密码
  3. 验证成功后,服务端会签发一个 Token(加了密的字符串),再把这个 Token 发送给客户端
  4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
  5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

实现

jsonwebtoken的安装引入

let jwt = require('jsonwebtoken')

生成签名

let token = jwt.sign(payload, secretOrPrivateKey, [options, callback])

[^ payload ]:json 还有username,userid
[^ secretOrPrivateKey]: 加密规则,字符串,或者私钥path模块
[^ options]: 可选配置项
[^ callback]: 成功回调, 可选 返回制作后的token,也可同步返回
校验token

jwt.verify(token, secretOrPublicKey, [options, callback])

token删除
又客户端,负责删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值