用JWT机制实现Token身份验证

本文介绍了使用JWT(JSON Web Token)实现Token身份验证的过程,包括JWT的三个组成部分:header、payload和signature,并讨论了其优于传统session的原因。在SSM框架的项目中,详细阐述了如何签发和验证Token,利用Spring MVC拦截器实现Token的自动检查,以及在敏感操作中如何校验Token数据确保安全性。最后强调了使用HTTPS协议传输JWT的重要性。
摘要由CSDN通过智能技术生成

用JWT机制实现Token身份验证

1.JWT(JSON WEB TOKEN)

由于HTTP的无状态性,我们无法判断是哪个客户端在请求接口。这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下。

解决的方法就是,当用户请求登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的 ID 号发送给客户端,客户端收到以后把这个 ID 号存储在 Cookie 里,下次这个用户再向服务端发送请求的时候,可以带着这个 Cookie ,这样服务端会验证一个这个 Cookie 里的信息,看看能不能在服务端这里找到对应的记录,如果可以,说明用户已经通过了身份验证,就把用户请求的数据返回给客户端。

上面说的就是 Session,我们需要在服务端存储为登录的用户生成的 Session ,这些 Session 可能会存储在内存,磁盘,或者数据库里。我们可能需要在服务端定期的去清理过期的 Session 。

但是有些情况下session并不那么好用,一个是session会占用后端内存资源,还有如果用户cookie中的sessionId被窃取,很容易就可以获取用户的私有数据.这时我们可以用token来解决这些问题

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

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

实际上,JWT的Token就是 JSON数据转换后的一串字符串 JWT主要包括三个部分:header(头部)payload(数据)signature(签名)

  • header
    header表示头部数据
{
"alg": "HS256",
"typ": "JWT"
}

alg属性表示签名使用的算法,默认为HMAC SHA256(写为HS256);typ属性表示令牌的类型&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值