你真的了解token续期嘛?

这篇具有很好参考价值的文章主要介绍了你真的了解token续期嘛?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring Boot + Vue中的Token续签机制

在这个示例中,我们将使用Spring Boot作为后端框架,Vue作为前端框架,演示如何在全栈应用中实现长短Token的续签。

1. Spring Boot后端

1.1 长Token的生成

在Spring Boot中,我们首先创建一个服务来生成JWT Token。使用jjwt库,确保在pom.xml文件中添加以下依赖:

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

然后,创建JwtTokenService服务:

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Service;
import java.util.Date;

@Service
public class JwtTokenService {

    private String secretKey = "your_secret_key";

    public String generateLongToken(String username) {
        long expiration = 7 * 24 * 60 * 60 * 1000; // 7 days
        return Jwts.builder()
                .setSubject(username)
                .setExpiration(new Date(System.currentTimeMillis() + expiration))
                .signWith(SignatureAlgorithm.HS256, secretKey)
                .compact();
    }

    // ... 其他方法 ...
}

1.2 短Token的生成

添加生成短Token的方法:

public String generateShortToken(String username) {
    long expiration = 15 * 60 * 1000; // 15 minutes
    return Jwts.builder()
            .setSubject(username)
            .setExpiration(new Date(System.currentTimeMillis() + expiration))
            .signWith(SignatureAlgorithm.HS256, secretKey)
            .compact();
}

1.3 Token续签

创建一个方法用于续签Token:

public String renewToken(String oldToken) {
    // 解析旧Token获取用户名
    String username = Jwts.parser()
            .setSigningKey(secretKey)
            .parseClaimsJws(oldToken)
            .getBody()
            .getSubject();

    // 生成新的短Token
    return generateShortToken(username);
}

2. Vue前端

在Vue应用中,确保每次请求时都附加Token,并在需要时更新Token。

2.1 处理Token过期

在Vue应用中,可以使用拦截器来检查Token是否过期,如果过期则触发续签流程:

// main.js 或者其他入口文件
import Vue from 'vue';
import axios from 'axios';

// 设置axios拦截器
axios.interceptors.request.use(
  config => {
    // 在发送请求之前做些什么
    const token = localStorage.getItem('token');
    if (token) {
      // 如果存在令牌,将其添加到请求头
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

axios.interceptors.response.use(
  response => {
    // 对响应数据做些什么
    return response;
  },
  error => {
    // 对响应错误做些什么
    const originalRequest = error.config;
    
    if (error.response.status === 401 && !originalRequest._retry) {
      // 如果响应状态为401(未授权)并且尚未重试过
      originalRequest._retry = true;
      
      // 发送续期请求
      return axios.post('/api/renew-token')
        .then(response => {
          // 更新本地存储的令牌
          updateLocalStorageToken(response.data.token);
          
          // 重新发送原始请求
          return axios(originalRequest);
        });
    }
    
    return Promise.reject(error);
  }
);

// 将axios添加到Vue的原型中,使其在组件中可以直接使用
Vue.prototype.$http = axios;

通过这个拦截器,我们在每次请求时就可以检查Token是否过期,如果过期则触发续签流程。这样就实现了在Vue前端应用中的Token续签机制。文章来源地址https://www.toymoban.com/news/detail-797479.html

到了这里,关于你真的了解token续期嘛?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于token的身份认证及自动续期的解决方案

        B/S架构大家应该都不陌生,web1.0时代,用户通过个人电脑浏览网站,单项获取信息,比如我们浏览新闻,查阅资料等。web2.0很快就到来,和1.0相比,用户可以随时随地分享自己的信息。这个时候就涉及到了我们的身份认证。当我们使用http无状态请求访问资源服务的时候,

    2023年04月16日
    浏览(56)
  • 尚医通-day12【token续期和就诊人管理】(内附源码)

    ![image-20230225060710 前面我们完成了用户登录、用户认证与就诊人管理,现在我们需要把这些信息在我们的平台管理系统中进行统一管理 简单的设置redis和cookie的过期时间,会导致用户在操作的过程中掉线,为了解决这个问题,我们可以使用token续期的方案,具体的做法是生成一

    2024年02月09日
    浏览(43)
  • 了解Chatgpt key token计价或扣费说明

    了解Chatgpt key及token计费方式 token 与 文字 的换算 OpenAI的定价是基于token的,对于英文文本,1个token大约是4个字符或0.75个单词。通常1000个Token约等于750个英文单词或者400~500个汉字。 花费 1000个token的价格是0.002美元,换算成人民币1000字的问答所消耗的费用2分钱左右。 gpt3与

    2024年02月08日
    浏览(40)
  • 接口测试中的Token鉴权(Postman中Token的获取和引用)

    (我的公众号“墨石测试攻略”,分享测试技能和实战项目,欢迎关注!) 【什么是Token鉴权?】 鉴权是指验证用户是否有权访问系统的行为。 Token 鉴权是其中一种鉴权方式,其他的鉴权方式还有HTTP Basic Authentication、session+cookie、OAuth Token是一个令牌,通俗地说就是“暗号”

    2024年01月15日
    浏览(36)
  • 大模型中的token是什么?

    定义 大模型的\\\"token\\\"是指在自然语言处理(NLP)任务中,模型所使用的输入数据的最小单元。这些token可以是单词、子词或字符等,具体取决于模型的设计和训练方式。 大模型的token可以是单词级别的,也可以是子词级别的,甚至是字符级别的,具体取决于模型的设计和训练方

    2024年02月22日
    浏览(31)
  • 权限校验中的“双token”方案

    注:refresh_token的过期时间一般比access_token的过期时间长一倍,甚至更长 在以前,我们设计单token的方案进行token过期刷新,一旦这个token泄露,不法分子就可以无限进行token刷新,从而造成无法挽回的后果。

    2024年02月11日
    浏览(30)
  • UnityWebGL获取网页地址中的Token值

    与网页端具体的交互参考我的例外一篇博客:传送门 Unity与浏览器交互的官方地址 Unity版本:Unity2021.2.15f1 .jslib的代码内容: 注意:代码中添加注释会打包报错,打包的文件夹会缺少文件,具体是什么原因,我也不清楚。 报错内容: Building LibraryBeeartifactsWebGLbuilddebug_WebGL

    2024年02月11日
    浏览(37)
  • Spring Security请求oauth/token接口报401 Unauthorized

    项目spring-security+oauth2 版本是5.7.6 项目以client的形式请求 TokenEndPoint 中的 /oauth/token ,使用Basic认证调用接口,返回token 先前是可以登录访问,更新代码之后,现在登录访问报401 Unauthorized 问题的难点是,这个错误信息是项目中请求以http方式请求 TokenEndPoint 中的 /oauth/token 返回

    2023年04月22日
    浏览(44)
  • Spring Gateway、Sa-Token、nacos完成认证/鉴权

    之前进行鉴权、授权都要写一大堆代码。如果使用像Spring Security这样的框架,又要花好多时间学习,拿过来一用,好多配置项也不知道是干嘛用的,又不想了解。要是不用Spring Security,token的生成、校验、刷新,权限的验证分配,又全要自己写,想想都头大。 Spring Security太重

    2024年02月09日
    浏览(43)
  • 【Spring Security】认证&密码加密&Token令牌&CSRF的使用详解

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Spring Security》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你的加入,一

    2024年02月04日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包