关于Redis中保存RefreshToken信息(做到JWT的可控性) 登录认证通过后返回AccessToken信息(在AccessToken中保存当前的时间戳和帐号),同时在Redis中设置一条以帐号为Key,Value为当前时间戳(登录时间)的RefreshToken,现在认证时必须AccessToken没失效以及Redis存在所对应的RefreshToken,且RefreshToken时间戳和AccessToken信息中时间...
然后,创建一个JwtUtils类来生成和验证token: publicclassJwtUtils{publicstaticfinalStringSECRET_KEY="your_secret_key";publicstaticfinallongEXPIRATION_TIME=86400000;// 24小时publicstaticStringgenerateToken(Stringusername){DateexpirationDate=newDate(System.currentTimeMillis()+EXPIRATION_TIME);returnJwts.builder()...
/sevenhee spring: application: name: shiro redis: host: 127.0.0.1 port: 6379 password: '' jedis: pool: max-active: 8 max-wait: -1 max-idle: 500 min-idle: 0 lettuce: shutdown-timeout: 0 timeout: 2000ms cache: type: redis #自定义属性 custom: jwt: tokenHeader: SevenHee-Token expi...
import org.springframework.data.redis.core.StringRedisTemplate; import javax.servlet.Filter; import java.util.HashMap; /** * shiro配置 */ @Configuration public class ShiroConfig { @Autowired private TokenRealm tokenRealm; @Autowired private JWTProperties jwtProperties; @Autowired private StringRedisTem...
创建Jwt 工具类。package com.xiaqiuchu.common.config.shiro; import java.util.Map; import org.springframework.stereotype.Component; import cn.hutool.jwt.JWT; import cn.hutool.jwt.JWTUtil; import lombok.Data; @Component @Data public class ShiroJwtUtil { private static final byte[] key = "换成...
效果图如下: shiro整合jwt项目结构.png springboot-shiro-jwt-common:放置公共常量、配置等。 springboot-shiro-jwt-redis:redis封装。 springboot-shiro-jwt-web:web接口提供方,token鉴权。 springboot-shiro-jwt-sso:登入登出、token授权及消除。
String token = req.getHeader(jwtProperties.getHeader()); if(StrUtil.isEmpty(token)){ HttpUtils.resp(response,"请先进行登录"); returnfalse; } //判断token是否存在,如果不存在则证明失效或者过期 String s = redisTemplate.opsForValue().get(RedisConstant.TOKEN_USER_KEY + token); ...
主要是springboot的版本,shiro、jwt、redis的依赖。 pom文件如下:<?xml version="1.0" encoding="UTF...
server:port:8001spring:application:name:springboot-shiro-jwt-sso # profiles:springboot-shiro-jwt-sso ##Redis配置-start redis:#Redis数据库索引(默认为0) database:1#Redis服务器地址 host:127.0.0.1#Redis服务器连接端口 port:6379#Redis服务器连接密码(默认为空) ...
然后通过初始化的时候传递 */ private StringRedisTemplate redisTemplate; private JWTProperties jwtProperties; public TokenFilter(StringRedisTemplate redisTemplate, JWTProperties jwtProperties) { this.redisTemplate = redisTemplate; this.jwtProperties = jwtProperties; } /** * isAccessAllowed:是否允许访问 *...