你真的了解token续期嘛?
Spring Boot + Vue中的Token续签机制
在现代的全栈应用开发中,Spring Boot作为后端框架和Vue.js作为前端框架的组合非常流行。在这种架构中实现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>
生成Token
创建一个服务JwtTokenService来生成和解析Token。
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
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 设置Axios拦截器
在Vue项目中,我们使用Axios来发送HTTP请求。通过设置拦截器,我们可以在每个请求中自动添加Token。
import axios from '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);
}
);
你真的了解token续期嘛?的更多相关文章
- 聊聊 OAuth 2.0 的 Token 续期处理
Token 校验逻辑 // CheckTokenEndpoint.checkToken @RequestMapping(value = "/oauth/check_token") ...
- 关于Token和Cookie做权限校验的区别及Token自动续期方案
title: 关于Token和Cookie做权限校验的区别及Token自动续期方案 categories: 后端 tags: - .NET Token和Cookie的区别 首先,要知道一些基本概念:h ...
- Token:服务端身份验证的流行方案【转】
01- 身份认证 服务端提供资源给客户端,但是某些资源是有条件的.所以服务端要能够识别请求者的身份,然后再判断所请求的资源是否可以给请求者. token是一种身份验证的机制,初始时用户提交账号数据给服 ...
- .net core webapi jwt 更为清爽的认证 ,续期很简单(2)
.net core webapi jwt 更为清爽的认证 后续:续期以及设置Token过期 续期: 续期的操作是在中间件中进行的,续期本身包括了前一个Token的过期加发放新的Token,所以在说续 ...
- Token:服务端身份验证的流行方案
01- 身份认证 服务端提供资源给客户端,但是某些资源是有条件的.所以服务端要能够识别请求者的身份,然后再判断所请求的资源是否可以给请求者. token是一种身份验证的机制,初始时用户提交账号数据给服 ...
- OAuth2.0 知多少
1. 引言 周末逛简书,看了一篇写的极好的文章,点击大红心点赞,就直接给我跳转到登录界面了,原来点赞是需要登录的. 可是没有我并没有简书账号,一直使用的QQ的集成登录.下面有一排社交登录按钮,我们可以 ...
- OAuth2.0 知多少(好)
https://www.cnblogs.com/sheng-jie/p/6564520.html 简书集成的社交登录,大大简化了我们的注册登录流程,真是一号在手上网无忧啊.这看似简单的集成,但背后的技 ...
- 基于Shiro,JWT实现微信小程序登录完整例子
小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html ...
- 使用Shiro+JWT完成的微信小程序的登录(含讲解)
使用Shiro+JWT完成的微信小程序的登录 源码地址https://github.com/Jirath-Liu/shiro-jwt-wx 微信小程序用户登陆,完整流程可参考下面官方地址,本例中是按此 ...
- 基于 Spring Security 的前后端分离的权限控制系统
话不多说,入正题.一个简单的权限控制系统需要考虑的问题如下: 权限如何加载 权限匹配规则 登录 1. 引入maven依赖 1 <?xml version="1.0" enc ...
随机推荐
- CTA策略介绍
CTA策略更多的时候是一种投资方法,更准确的说,主要投资于衍生品的.比较系统化规则化的投资方法都可以称作CTA投资,它并不拘泥于量化或是主动,其具有相当的生命力,会长期存在. CTA策略的收入来源是多 ...
- Node01-简介与安装
01. Node.js是什么? pNode.js是一个基于V8 JavaScript引擎的JavaScript运行时环境. 也就是说: Node.js基于V8引擎来执行JavaScript的代码. V ...
- OpenSSL 使用AES对文件加解密
AES(Advanced Encryption Standard)是一种对称加密算法,它是目前广泛使用的加密算法之一.AES算法是由美国国家标准与技术研究院(NIST)于2001年发布的,它取代了原先 ...
- Go笔记(3)-3种go语言的键盘输入详解
go语言的键盘输入详解 go语言中有三种输入函数,分别是: fmt.Scanf() 可以按照指定的格式进行输入 fmt.Scanln() 通过指针将值赋值给变量 fmt.Scan() (1)fmt.S ...
- 深度解析C#中LinkedList<T>的存储结构
本文承接前面的3篇有关C#的数据结构分析的文章,对于C#有关数据结构分析还有一篇就要暂时结束了,这个系列主要从Array.List.Dictionary.LinkedList. SortedSet等5 ...
- Macbook磁盘系统结构/文件/目录介绍分析
1. 系统磁盘根目录详解: 1.1 磁盘根目录结构 / (根目录)|-- Applications # 存放应用程序|-- Users # 存放用户文件和设置|-- cores # 存放核心转储文件, ...
- 🎉开发者的福音:TinyVue 组件库文档大优化!类型更详细,描述更清晰!
你好,我是 Kagol. 前言 从今年2月份开源以来,有不少朋友给我们 TinyVue 组件库提了文档优化的建议,这些建议都非常中肯,我们也在持续对文档进行优化,并且从中总结出了大家对于文档优化的一些 ...
- 分布式文件系统HDFS简介
HDFS实现目标: 兼容廉价的硬件设备 支持大数据集 实现流数据读写 支持简单的文件模型 强大的跨平台兼容性 自身的局限性: 不适合低延迟的数据访问 无法高效储存大量小文件 ...
- storeToRefs()的作用和使用
store 是一个用 reactive 包装的对象,这意味着不需要在 getters 后面写 .value,就像 setup 中的 props 一样,如果你写了,我们也不能解构它: <scrip ...
- 深入理解 Docker 核心原理:Namespace、Cgroups 和 Rootfs
通过这篇文章你可以了解到 Docker 容器的核心实现原理,包括 Namespace.Cgroups.Rootfs 等三个核心功能. 如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎 ...