前端基础 用户信息校验

用户登录

  1. 账号密码登录
  2. 授权登录

账号密码登录

直接返回用户的ID

登陆后服务器返回用户Id,后续直接根据用户Id判断为该用户操作
这种方式直接暴露用户Id,如果id设计简单容易被推测所有用户的Id

使用加密的token

登陆后服务器返回md5(用户Id),后续直接根据md5(用户Id)判断为该用户操作,这个值关联用户信息
这种方式不容易推测用户Id,但是这个值是永久的

使用session

登陆后服务器返回md5(用户Id + 盐),后续直接根据md5(用户Id + 盐)判断为该用户操作,这个值关联用户信息,设置过期时间,过期后需要重新登录
这种方式过期后需要重新登录,数据需要存储在服务器

session值放在localStorage和cookies的区别

  1. cookies会每次请求自动带上在请求头上,去过在没清除cookie的情况下容易发生跨站请求攻击
  2. localStorage需要开发者写上才能在请求中带上,可以避免跨站请求攻击

无感刷新

加大被攻击的难度

  1. 需要两个token: 用户信息关联的token ;刷新用的refleshToken
  2. 用户token是关联用户信息,refleshToken过期时间大于token的过期时间
  3. 当token过期后,服务器返回错误,使用refleshToken去获取最新的token
  4. 如果refleshToken过期,需要重新登录
  5. 如果refleshToken没过期,返回token,并再次执行请求

使用JWT(Json Web Token)

登陆后服务器返回JWT,后续直接根据JWT判断为该用户操作,这个值有加密后的用户信息,并且有过期时间(JWT官网的介绍
这种方式过期后需要重新登录,数据需要存储在客户端中,传到服务器后解密jwt即可获取用户信息,可以做到不查询或者少查询数据库

组成

header

header由两部分组成:

  1. 类型 即JWT (type:JWT)
  2. 使用的加密算法(HMAC 、SHA256 或 RSA)
{
  "alg": "HS256",
  "typ": "JWT"
}
playload

存放明文信息

Signature

签名:需要使用header里面的算法,把header和playload使用“.”隔开,secret是自行定义的密钥
用来校验playload里面的内容有没有被修改

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值