SMM+shiro集成jwt 生成token 实现与vue验证登录

本文介绍了如何在SMM+Shiro的后台系统中,为PC端实现前后端分离并引入JWT(JSON Web Tokens)进行身份验证。在登录时生成签名Token,存储于Redis缓存,客户端携带Token进行后续请求。服务端通过验证Token有效性及与缓存中RefreshToken的时间戳对比,确保安全性。当Token过期时,系统会重新生成Token并更新Redis中的RefreshToken。
摘要由CSDN通过智能技术生成

之前的后台由smm+shiro搭建,最近想要pc端实现前后端分离,但移动端和管理端这些公用一个,想要实现前后端分离,而且不影响管理端的操作,管理端是由session存储用户信息,之前的pc端也是,通过shiro实现登录授权认证,现在pc端实现前后分离,这样的话前后交互不安全,同时存在跨域的问题,因此,想实现pc端前后分离,不影响 管理端,所以pc端采用jwt生成token,进行每次操作的验证。

JWT(JSON Web Tokens)是一种用于安全的传递信息而采用的一种标准。Web系统中,我们使用加密的Json来生成Token在服务端与客户端无状态传输,代替了之前常用的Session。
系统采用Redis作为缓存,解决Token过期更新的问题。

JWT登录主要流程:

  1. 登录时,密码验证通过,取当前时间戳生成签名Token,放在Response Header的Authorization属性中,同时在缓存中记录值为当前时间戳的RefreshToken,并设置有效期。
  2. 客户端请求每次携带Token进行请求。
  3. 服务端每次校验请求的Token有效后,同时比对Token中的时间戳与缓存中的RefreshToken时间戳是否一致,一致则判定Token有效。
  4. 当请求的Token被验证时抛出TokenExpiredException异常时说明Token过期,校验时间戳一致后重新生成Token并调用登录方法。
  5. 每次生成新的Token后,同时要根据新的时间戳更新缓存中的RefreshToken,以保证两者时间戳一致。

在使用jwt时  maven中添加以下

<dependency>
   <groupId>io.jsonwebtoken</groupId>
   <artifactId>jjwt</artifactId>
   <version>0.6.0</version>
</dependency>

jwt生成

/**
 * 生成token
 * @param id
 * @param subject
 * @param ttlMillis
 * @param claims
 * @return
 * @throws Exception
 */
public static  String createJWT(
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值