`
zysnba
  • 浏览: 182928 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

JWT生成Token

阅读更多
使用JWT核心代码:
引入所需jar
maven -----------------------------
<dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.7.0</version>
        </dependency>


gradle-----------------------------------------


//jwt
  compile('com.auth0:java-jwt:3.2.0')
  compile('io.jsonwebtoken:jjwt:0.7.0')


新建一个类登录的
package com.zys.Jwt;

public class LoginUser {
private Integer id;
private String userName;
private boolean isLogin;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public boolean isLogin() {
return isLogin;
}
public void setLogin(boolean isLogin) {
this.isLogin = isLogin;
}


}


新建立
package com.zys.Jwt;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang3.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;

public class JwtTokenUtil {
  public static final String ISSUER = "test_user";
  public static final Logger logger = LoggerFactory.getLogger(JwtTokenUtil.class);
/**
     * 生成登陆token
     *
     * @param LoginUser
     * @return
     */
    public static String createLoginToken(LoginUser LoginUser) {
        try {
            Algorithm algorithm = Algorithm.HMAC256(LoginInfoConstants.TOKEN_SECURITY);
            JWTCreator.Builder builder = JWT.create()
                    .withIssuer(ISSUER)
                     //设置过期时间为3个月
                    .withExpiresAt(DateUtils.addMonths(new Date(), 3));
            if(LoginUser != null){
                builder.withClaim(LoginInfoConstants.USER_ID, LoginUser.getId());
                builder.withClaim(LoginInfoConstants.USER_NAME, LoginUser.getUserName());
                builder.withClaim(LoginInfoConstants.IS_LOGIN, true);
            }
            return builder.sign(algorithm);
        } catch (Exception e) {
            logger.error("生成token失败,失败原因:{}", e);
        }
        return null;
    }
   
    /**
     * 验证jwt,并返回数据LoginUser
     */
    public static LoginUser verifyLoginToken(String token) {
        Algorithm algorithm;
        Map<String, Claim> map = new HashMap<String, Claim>();
        LoginUser loginUser = new LoginUser();
        try {
            algorithm = Algorithm.HMAC256(LoginInfoConstants.TOKEN_SECURITY);
            JWTVerifier verifier = JWT.require(algorithm).withIssuer(ISSUER).build();
            DecodedJWT jwt = verifier.verify(token);
            map = jwt.getClaims(loginUser.getId());
           if(map.get(LoginInfoConstants.USER_ID) != null) {
            loginUser.setId(map.get(LoginInfoConstants.USER_ID).asInt());
            }
          
            if(map.get(LoginInfoConstants.USER_NAME) != null) {
            loginUser.setUserName(map.get(LoginInfoConstants.USER_NAME).asString());
            }
            loginUser.setLogin(map.get(LoginInfoConstants.IS_LOGIN).asBoolean());
        } catch (Exception e) {
        loginUser = null;
            logger.error("解密token失败:{}", e);
        }
        return loginUser;
    }
   
   
    public static void main(String[] args) {
    LoginUser loginUser = new LoginUser();
    loginUser.setId(123456);
    loginUser.setUserName("张三");
        String token = createLoginToken(loginUser);
        System.out.println("================="+token);
        String token1=token;
        LoginUser loginUserResult = JwtTokenUtil.verifyLoginToken(token1);
        System.out.println(loginUserResult.getId());
        System.out.println(loginUserResult.getUserName());
        System.out.println(loginUserResult.isLogin());
    }
}



系统常量

package com.zys.Jwt;

public class LoginInfoConstants {
/**用户id*/
    public static final String USER_ID = "id";

    /**
     * 用户名
     */
    public static final String USER_NAME = "userName";

    /**
     * 是否登陆
     */
    public static final String IS_LOGIN = "isLogin";

    /**
     * token 名称
     */
    public static final String TOKEN_NAME = "authorization";
   
    /**
     * jwt 加密串
     */
    public final static String TOKEN_SECURITY = "token.security";

   
}


















https://blog.csdn.net/qq_23112559/article/details/80222364  linux停止tomcat


http://cmsblogs.com/?p=2919
分享到:
评论

相关推荐

    JWT Token生成及验证

    4. **JWT生成**:生成JWT时,你需要提供一个签发者(issuer, `iss`)、接收者(audience, `aud`)、有效时间(expiration time, `exp`)以及其他自定义声明。例如,使用`JwtSecurityToken`类,设置这些参数并生成...

    JWT 生成Token实战验证

    本实战验证将探讨如何在Java环境中使用JWT生成和验证Token。 1. **JWT 结构** JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。头部和载荷是JSON对象,经过Base64编码,而签名则用于验证...

    JWT 生成Token及验证.PDF

    JWT 生成 Token 及验证 JWT(JSON Web Token)是一种用于双方之间传递安全信息的简洁、URL 安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的、自包含的方法用于通信双方之间以 Json ...

    JWT Token生成及验证(源码)

    5. JWT生成: 在代码中,使用特定的库(如Java的jjwt、Node.js的jsonwebtoken或.NET的JWT.NET等)来生成JWT。首先,构造头部和载荷的JSON对象,然后进行Base64编码。接着,使用指定的算法和密钥生成签名。最后,将...

    JWT 生成Token及验证

    例如,在Web应用中,用户登录成功后,服务器端会生成一个包含用户信息和过期时间的JWT Token,并将其返回给客户端。客户端随后可以在请求中携带这个Token,以证明用户的身份。 此外,通过在Payload中使用私有声明,...

    Java中使用JWT生成Token进行接口鉴权实现方法

    Java中使用JWT生成Token进行接口鉴权实现方法 Java中使用JWT生成Token进行接口鉴权实现方法是当前最流行的鉴权方式之一。通过本文,读者可以了解到使用JWT生成Token进行接口鉴权的详细实现方法。 什么是JWT? JWT...

    SpringBoot集成JWT生成token及校验方法过程解析

    SpringBoot集成JWT生成token及校验方法过程解析 本文主要介绍了SpringBoot集成JWT生成token及校验方法的过程解析,通过示例代码详细介绍了JWT token的生成和校验过程,为读者提供了详细的Reference和学习价值。 一...

    jwt_token_test.zip

    Java Web Token(JWT)是一种轻量级的身份验证和授权机制,广泛应用于移动应用与服务器之间的交互。JWT允许在用户身份验证后将权限信息安全地编码为一个字符串,并在客户端和服务端之间传递,无需存储session信息在...

    JWT格式的Token动态库封装,包括获取token,验证token,获取token中保存的内容

    生成Token时,通常需要设置一个密钥(secret key)和一些载荷(payload),载荷可以包含用户的ID、角色等信息。通过将这些数据加密,服务器能够创建一个安全的、可验证的身份凭证。 2. **验证Token**:验证JWT ...

    c#生成token验证4

    本篇文章将详细探讨C#中生成Token的基本概念、常用库以及如何实现Token验证。 一、JWT(JSON Web Tokens)介绍 JWT是一种轻量级的身份认证协议,它允许服务端签发一个JSON格式的Token,包含了用户的相关信息。这个...

    .net core 3.1 jwt刷新token

    7. 示例代码:创建一个自定义JWT处理器,继承自`JwtSecurityTokenHandler`,并重写`CanReadToken`和`ValidateToken`方法,以支持刷新令牌的验证和生成。在Startup.cs中配置认证中间件,并设置相关的JWT选项,如...

    drf_jwt_token_demo.zip

    使用django-rest-framework-jwt在django中创建和认证token,用于在移动端来认证和用户,本文通过自己编写模型来实现根据用户来生成token,在请求头中添加Authentication来进行认证,保持登录状态。可以直接使用,...

    学习如何使用JWT来保护您的WebApp包含教程测试示例

    JSON Web Token(JWT)是一种轻量级的身份验证和授权机制,广泛用于现代Web应用程序和API。这个教程将帮助您理解JWT的工作原理,并提供实践指导,确保您的Web应用的安全性。 一、JWT简介 JWT由三个部分组成:头部...

    Webapi_JWT_Authentication-master_webapi_jwt_token_

    2. **JWT生成**:服务器使用私钥对Header和Payload进行编码(Base64URL无填充编码),然后将这两个编码后的字符串用"."连接。接着,使用私钥对整个字符串进行签名,生成Signature。这样就形成了完整的JWT。 3. **...

    ASP.NET Core 3.1 JWT token实现与应用

    - 使用`JwtSecurityTokenHandler`类,结合`ClaimsPrincipal`对象和密钥,可以生成JWT Token。Claims代表用户的属性,如用户ID、角色等。 - 生成的Token应安全地发送给客户端,通常在登录成功后返回。 4. **验证...

    基于springboot+jwt实现刷新token过程解析

    在登录方法中,我们使用JwtUtil.sign()方法来生成Token,并将其存储到Redis中。在拦截器中,我们使用JwtUtil.verify()方法来验证Token的有效期,如果 Token 已经过期,则重新登录。 优点和缺点 在线刷新Token的方式...

Global site tag (gtag.js) - Google Analytics