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));
    }
}
目录
相关文章
|
8月前
|
Web App开发 安全 iOS开发
dd-ztna-token 是一个安全令牌
dd-ztna-token 是一个安全令牌
57 2
|
JSON Unix 中间件
gin 基于JWT实现token令牌功能
token 我的理解是一种凭证,客户端请求时携带此凭证才能有效访问需要验证凭证的服务端接口,而且token可以加密携带客户端的一些信息,比如基本的信息是有效期,生效日期,可以看作是令牌。
3969 0
|
10天前
|
C语言
C的令牌(Token)
C的令牌(Token)。
4 0
|
11月前
|
存储 安全 前端开发
token详解
token详解
2347 0
|
11月前
|
存储 算法 前端开发
如何生成以及校验token
如何生成以及校验token
|
缓存 前端开发 算法
深入理解token
Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位
524 0
|
算法 中间件
koa如何进行token设置和进行token过期验证
两个参数分别是签名算法和自定义的签名Key(盐)。签名key可以byte[] 、String及Key的形式传入。前两种形式均存入builder的keyBytes属性,后一种形式存入builder的key属性。如果是第二种(及String类型)的key,则将其进行base64解码获得byte[] 。
|
前端开发 算法 网络安全
深入理解Token
深入理解Token
930 0
深入理解Token
|
JSON 安全 Java
Jwt和Token
Jwt和Token的认识
1419 0
Jwt和Token
|
开发工具
获取Token
获取Token
2704 0