返回顶部
首页 > 资讯 > 后端开发 > Python >Spring Boot实现JWT token自动续期的实现
  • 426
分享到

Spring Boot实现JWT token自动续期的实现

2024-04-02 19:04:59 426人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

1.为什么要 token自动续期 token中一般会包含用户的基本信息,为了保证token的安全性,一般会将token的过期时间设置的比较短,但是这样会导致用户因为token过期需

1.为什么要 token自动续期

token中一般会包含用户的基本信息,为了保证token的安全性,一般会将token的过期时间设置的比较短,但是这样会导致用户因为token过期需要频繁登录,因此需要token自动续期。

2.如何实现token自动续期

登录时将token存入Redis中,缓存有效期设置为 token有效时间的两倍(比token有效时间长即可)。


//创建token
String token = JwtUtil.createToken(sysUser.getId(), user.getUserName());
 //将token放入redis中,key为用户的手机号+"token"
redisUtil.set(sysUser.getPhone() + GlobalConstant.TOKEN, token, JwtUtil.EXPIRE_TIME*2);

在这里插入图片描述

在拦截器中重写public boolean preHandle(httpservletRequest request,
HttpServletResponse response, Object handler)方法


	 
    private boolean refreshToken(SysUser sysUser) {
        String token = request.getHeader(GlobalConstant.TOKEN);
        String cacheToken = (String) (redisUtil.get(sysUser.getPhone() + GlobalConstant.TOKEN));
        //请求头中不存在token,返回false
        if (StringUtil.isEmpty(token)) {
            logger.error("token不存在");
            return false;
        }
        //用户是否登录只根据redis中token是否存在决定,redis中不存在token,返回false
        if (StringUtil.isEmpty(cacheToken)) {
            logger.error("用户未登录");
            return false;
        }
        try {
            //验证请求头中的token是否合法
            JwtUtil.verify(token);
        } catch (TokenExpiredException tokenExpiredException) {
            
            if (redisUtil.hasKey(sysUser.getPhone() + GlobalConstant.TOKEN)) {
                //生成新的token,并以之前的key作为key放入redis中,以此重新刷新redis中的token的过期时间
                String newToken = JwtUtil.createToken(sysUser.getId(), sysUser.getUserName());
                redisUtil.set(sysUser.getPhone() + GlobalConstant.TOKEN, newToken, JwtUtil.EXPIRE_TIME * 2);
                return true;
            }
        } catch (Exception e) {
            //若抛出除token过期异常之外的其他异常,说明该token不合法
            logger.error("token不合法");
            return false;
        }
        return true;
    }

在这里插入图片描述

在这里插入图片描述

JwtUtil工具类如下


import com.admin.common.constant.GlobalConstant;
import com.auth0.jwt.JWT;
import com.auth0.jwt.alGorithms.Algorithm;

import javax.servlet.http.HttpServletRequest;
import java.util.Calendar;
import java.util.Date;

public class JwtUtil {
    
    public static final String TOKEN_SECRET_KEY = "tokenSecreTKEy";
    
    public static final int EXPIRE_TIME = 60;

    
    public static String createToken(Long userId, String userName) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.SECOND, EXPIRE_TIME);
        return JWT.create()
                //签发对象
                .withAudience(userId + "")
                //载荷
                .withClaim("userName", userName)
                //签发时间
                .withIssuedAt(new Date())
                //有效时间
                .withExpiresAt(calendar.getTime())
                //加密
                .sign(Algorithm.HMac256(TOKEN_SECRET_KEY));
    }

    
    public static void verify(String token) {
        JWT.require(Algorithm.HMAC256(TOKEN_SECRET_KEY)).build().verify(token);
    }

 	
    public static Long getUserIdByToken(HttpServletRequest request) {
        String token = request.getHeader(GlobalConstant.TOKEN);
        String userId = JWT.decode(token).getAudience().get(0);
        return Long.valueOf(userId);
    }
}

到此这篇关于Spring Boot实现JWT token自动续期的实现的文章就介绍到这了,更多相关spring Boot JWT token自动续期内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring Boot实现JWT token自动续期的实现

本文链接: https://lsjlt.com/news/159373.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring Boot实现JWT token自动续期的实现
    1.为什么要 token自动续期 token中一般会包含用户的基本信息,为了保证token的安全性,一般会将token的过期时间设置的比较短,但是这样会导致用户因为token过期需...
    99+
    2024-04-02
  • ASP.NET Core 实现自动刷新JWT Token
    目录原理实现结论前言: 为了安全性考虑,我们可以设置JWT Token较短的过期时间,但是这样会导致客户端频繁地跳到登录界面,用户体验不好。 正常解决办法是增加​​refresh_t...
    99+
    2024-04-02
  • ASP.NET Core怎么实现自动刷新JWT Token
    这篇文章主要介绍了ASP.NET Core怎么实现自动刷新JWT Token的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ASP.NET Core怎么实现自动刷新JWT ...
    99+
    2023-06-30
  • Spring Boot整合JWT的实现步骤
    springboot整合jwt步骤: 1、登录时,验证账号和密码成功后,生成jwt,返回给前端; 2、前端接收后保存,再做其他操作,比如增删改查时,同时将jwt传给后端进行验证,如果...
    99+
    2024-04-02
  • PHP实现JWT的Token登录认证
    1、JWT简介 JSON Web Token(缩写 JWT),是目前最流行的跨域认证解决方案。 session登录认证方案:用户从客户端传递用户名、密码等信息,服务端认证后将信息存储在session中,将session_id放到cookie...
    99+
    2017-03-29
    PHP实现Token登录认证 PHP Token认证 Token登录认证
  • SpringBoot实现JWTtoken自动续期的示例代码
    为什么要 token自动续期 token中一般会包含用户的基本信息,为了保证token的安全性,一般会将token的过期时间设置的比较短,但是这样会导致用户因为token过期需要频繁...
    99+
    2023-01-28
    SpringBoot JWT token自动续期 SpringBoot JWT token
  • 实战SpringBoot集成JWT实现token验证
    目录环境搭建1、新建一个SpringBoot项目Jwt-Demo,引入项目后面需要用到的jar包2、数据库结构3、配置文件application.properties4、Entity...
    99+
    2024-04-02
  • Spring Boot怎么实现接口自动幂等
    今天小编给大家分享一下Spring Boot怎么实现接口自动幂等的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我...
    99+
    2024-04-02
  • 如何实现自动配置Spring Boot框架
    本篇文章为大家展示了如何实现自动配置Spring Boot框架,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、新建starter的Maven项目我这里以IntelliJ IDEA创建Project...
    99+
    2023-05-31
    springboot 自动配置 spring boo
  • vue实现token过期自动跳转到登录页面
    这几天项目提测,测试给我提了个bug,说token过期,路由应该自动跳转到登陆页面,让用户重新登录。先说下一些前置条件, 1:我公司的token时效在生产环境设置为一个小时,当to...
    99+
    2024-04-02
  • Redis分布式锁如何自动续期的实现
    目录Redis 实现分布式锁问题自动续期看门狗Redissson tryLock看门狗如何自动续期续期原理Redis 实现分布式锁 指定一个 key 作为锁标记,存入 Re...
    99+
    2024-04-02
  • Spring Boot怎么集成JWT实现前后端认证
    本文小编为大家详细介绍“Spring Boot怎么集成JWT实现前后端认证”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring Boot怎么集成JWT实现前后端认证”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-06-30
  • JAVA Spring Boot 自动配置实现原理详解
    目录引言主启动类的注解@SpringBootApplication1、@SpringBootConfiguration2、@ComponentScan3、@EnableAutoCon...
    99+
    2024-04-02
  • PHP如何实现JWT的Token登录认证
    本篇内容介绍了“PHP如何实现JWT的Token登录认证”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、JWT简介JSON Web Tok...
    99+
    2023-06-21
  • spring boot 自定义starter的实现教程
    spring boot 使用 starter 解决了很多配置问题, 但是, 他是怎么来解决这些问题的呢?这里通过一个简单的例子, 来看一下, starter是怎么来设置默认配置的.一. 建 starter 项目自定义的starter...
    99+
    2023-05-30
    spring boot 自定义
  • SpringBoot JWT实现token登录刷新功能
    目录1. 什么是JWT2. JWT组成部分3. JWT加密方式4.实战5.总结1. 什么是JWT Json web token (JWT) 是为了在网络应用环境间传递声明而执行的一种...
    99+
    2024-04-02
  • SpringBoot集成JWT怎么实现token验证
    本篇内容主要讲解“SpringBoot集成JWT怎么实现token验证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot集成JWT怎么实现token验证”吧!JWT可以理解为一个...
    99+
    2023-06-22
  • SpringBoot集成JWT实现Token登录验证
    目录 1.1 JWT是什么? 1.2 JWT主要使用场景 1.3 JWT请求流程 1.4 JWT结构 二,SpringBoot集成JWT具体实现过程 2.1添加相关依赖 2.2自定义跳出拦截器的注解 2.3自定义全局统一返回值方法,异常类...
    99+
    2023-09-06
    spring boot 后端 java
  • gogin+token(JWT)验证实现登陆验证
    1.准备 go get github.com/dgrijalva/jwt-go go get github.com/gin-gonic/gin  2.代码 package ...
    99+
    2024-04-02
  • spring boot实现自动输出word文档功能的实例代码
    spring boot实现自动输出word文档功能 本文用到Apache POI组件 组件依赖在pom.xml文件中添加 <dependency> ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作