Token如何生成?

简介: Token如何生成?

Token --> 在登陆完成之后,生成字符串包括,用户信息(比如用户名)

在每个请求操作,如果登录判断,在请求头中,查看是否包含对应的token 字符串,如果包含,对字符串进行校验,对比判断是否是登陆时生成的对应的token 字符串。可以给token 设置过期时间

1、 公共部分

主要是该JWT的相关配置参数,比如签名的加密算法、格式类型、过期时间等等。

Key=ATGUIGU

2、 私有部分

用户自定义的内容,根据实际需要真正要封装的信息。

userInfo{用户的Id,用户的昵称nickName}

3、 签名部分

SaltiP: 当前服务器的Ip地址!{linux 中配置代理服务器的ip}

主要用户对JWT生成字符串的时候,进行加密{盐值}

最终组成 key+salt+userInfo è token!

base64编码,并不是加密,只是把明文信息变成了不可见的字符串。但是其实只要用一些工具就可以1把base64编码解成明文,所以不要在JWT中放入涉及私密的信息。


1: 首先引入依赖:
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
</dependency>
2:JwtHelper类
    public class JwtHelper {
    private static long tokenExpiration = 24*60*60*1000;
    private static String tokenSignKey = "123456";
    public static String createToken(Long userId, String userName) {
        String token = Jwts.builder()
                .setSubject("YYGH-USER")
                .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
                .claim("userId", userId)
                .claim("userName", userName)
                .signWith(SignatureAlgorithm.HS512, tokenSignKey)
                .compressWith(CompressionCodecs.GZIP)
                .compact();
        return token;
    }
    public static Long getUserId(String token) {
        if(StringUtils.isEmpty(token)) return null;
        Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
        Claims claims = claimsJws.getBody();
        Integer userId = (Integer)claims.get("userId");
        return userId.longValue();
    }
    public static String getUserName(String token) {
        if(StringUtils.isEmpty(token)) return "";
        Jws<Claims> claimsJws 
= Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
        Claims claims = claimsJws.getBody();
        return (String)claims.get("userName");
    }
    public static void main(String[] args) {
        String token = JwtHelper.createToken(1L, "55");
        System.out.println(token);
        System.out.println(JwtHelper.getUserId(token));
        System.out.println(JwtHelper.getUserName(token));
    }
}
目录
相关文章
|
编解码 安全 iOS开发
如何将ISO转换为MP4格式
将 ISO 文件转换为 MP4 格式,可以更方便地保存和在常用设备上播放。这里有 8 款适用于 Windows 和 Mac 的最佳软件程序,可用于将 ISO 文件转换为数字格式,以便在任何设备上欣赏您的视频。
|
存储 Ubuntu 网络协议
NAS个人云存储 - 手把手教你搭建Nextcloud个人云盘并实现公网远程访问(上)
NAS个人云存储 - 手把手教你搭建Nextcloud个人云盘并实现公网远程访问
|
4月前
|
人工智能 运维 JavaScript
2026年阿里云上部署+零门槛部署本地AI助手:Windows系统OpenClaw(Clawdbot)保姆级教程
在AI办公自动化全面普及的2026年,OpenClaw(原Clawdbot、Moltbot)作为阿里云生态下热门的开源AI代理工具,凭借“自然语言指令操控、多任务自动化执行、多工具无缝集成”的核心优势,成为个人与轻量办公群体打造专属AI助手的首选。不同于传统AI聊天工具,OpenClaw可直接落地实操任务——无论是文档生成、文件解析、日程提醒,还是阿里云服务器管理、办公流程自动化,都能通过简单的对话指令完成,无需编写一行代码。
1559 1
|
安全 API 开发工具
什么是Token
Token是一种用于身份验证和授权的凭证,广泛应用于云计算、API调用、实时音视频通信等场景。它通过加密算法生成,确保请求合法性与服务安全性。Token的核心作用包括身份验证、权限控制、安全保障和无状态化设计。生成方式有控制台、SDK、OpenAPI、JWT和服务端生成等。Token通常包含AppID、UserID、时间戳等字段,并通过哈希算法计算。应用场景涵盖智能语音交互、实时音视频通信、API网关和STS临时访问凭证等。使用时需注意有效期、密钥管理、权限设置和传输安全。
6907 4
|
4月前
|
人工智能 弹性计算 安全
阿里云无影云电脑版本价格:企业版、个人版和商业版详解、收费标准及性能测试
阿里云无影云电脑2025年最新价格:企业版4核8G低至199元/年,6核12G仅267元/3个月;GPU图形型(RTX 5880)459元/月;个人版黄金款14元/月起,黑金款149元/月。含免费试用及核时灵活计费,满足办公、设计、云游戏等多元需求。
1723 4
Image.FromFile导入图片引发的“内存不足”问题
  C# 的Image.FromFile导入一些大小为0的假图片文件引发的“内存不足”问题。   1、案例问题现场 (1)、大小为0的假图片文件     (2)、引发血案   2、解决方法 这里用的方法是导入时先对图片的大小进行判断,注意获取图片大小的方法。
1975 0
|
9月前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
448 0
|
运维 监控 网络协议
IPv6地址之间的转换技术:NAT66
【4月更文挑战第25天】
2914 0
IPv6地址之间的转换技术:NAT66