JWT-TOKEN认证

一实现思路
在这里插入图片描述
二:实现步骤
1.导入依赖

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

2.生成token

	@Test
	public void jwtTokenCreateTest(){
		JwtBuilder builder = Jwts.builder()
				.setId("666").setSubject("好好学习天天向上")
				.setIssuedAt(new Date())
				//添加自定义属性
			    .claim("role","admin")
				.setExpiration(new Date(new Date().getTime()+600000))
				.signWith(SignatureAlgorithm.HS256,"maoguidong");

		String jwtToken = builder.compact();
		System.out.println(jwtToken);
	}

3.解析Token,验证token的正确性

@Test
	public void jwtTokenParseTest(){
		String token = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NjYiLCJzdWIiOiLooYzotbDlnKjniZt" +
				"B55qE6Lev5LiKIiwiaWF0IjoxNTYxMjE2ODc4LCJleHAiOjE1NjEyMTY4ODF9.GhmAQ_G8aFExXc84Wefl13SwAJBqkDtQ05EsAqpAUUw";

	Claims claims = Jwts.parser().setSigningKey("maoguidong")
			.parseClaimsJws(token).getBody();

	System.out.println(claims.getId());
	System.out.println(claims.getSubject());
	System.out.println(claims.getIssuedAt());
	System.out.println(claims.getExpiration());
	//获取属性
    System.out.println(claims.get("role"));

}
注意:过期或者信息不正确,都会抛出相关异常。

4.工具类生成token

public class JwtUtils {
    //密钥由调用方来决定
    private String secretKey;

    //有效期也由调用方来决定
    private long ttl;

    public String getSecretKey() {
        return secretKey;
}

public void setSecretKey(String secretKey) {
    this.secretKey = secretKey;
}

public long getTtl() {
    return ttl;
}

public void setTtl(long ttl) {
    this.ttl = ttl;
}

public String createJwtToken(String id,String subject){
    long now = System.currentTimeMillis();
    JwtBuilder jwtBuilder = Jwts.builder()
            .setId(id).setSubject(subject)
            .setIssuedAt(new Date(now))
            .signWith(SignatureAlgorithm.HS256,secretKey);
    if(ttl > 0){
        jwtBuilder.setExpiration(new Date(now+ttl));
    }
    return jwtBuilder.compact();
}

public Claims parseJwtToken(String jwtToken){
    return Jwts.parser().setSigningKey(secretKey)
            .parseClaimsJws(jwtToken).getBody();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
要解析jwt-go的token,可以按照以下步骤进行操作: 1. 首先,引入`jwt-go`包并导入所需的其他依赖项。可以使用以下代码来实现: ``` import ( "fmt" "github.com/dgrijalva/jwt-go" ) ``` 2. 然后,定义自定义声明结构体,该结构体包含要在token中解析的声明信息。例如,可以定义一个名为`MyCustomClaims`的结构体,如下所示: ``` type MyCustomClaims struct { Foo string `json:"foo"` jwt.StandardClaims } ``` `MyCustomClaims`结构体中的`Foo`字段表示在token中包含的自定义声明。 3. 接下来,使用`jwt.ParseWithClaims`函数解析token并将其与自定义声明结构体进行绑定。可以使用以下代码实现: ``` tokenString := "eyJhbGciOiJIUzI1NiIsInR5cCI6I***XVCJ9.eyJmb28iOiJiY***iLCJleHAiOjE1***AwLCJpc3MiOiJ0ZXN0In0.HE7fK0xOQwFEr4WDgRWj4teRPZ6i3GLwD5YCm6Pwu_c" claims := &MyCustomClaims{} token, err := jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (interface{}, error) { // 返回用于验证token的加密密钥 return []byte("AllYourBase"), nil }) ``` 在`jwt.ParseWithClaims`函数中,传入token字符串、自定义声明结构体的指针和一个回调函数。回调函数用于提供用于验证token的加密密钥。 4. 最后,检查解析和验证token的结果。可以使用以下代码来检查是否成功解析和验证了token: ``` if token.Valid { fmt.Printf("%v %v", claims.Foo, claims.ExpiresAt) } else { fmt.Println(err) } ``` 如果token有效,可以通过`claims`变量访问其中的声明信息。在上述示例中,我们打印了`Foo`字段和`ExpiresAt`声明的值。如果token无效,将打印出解析和验证错误。 综上所述,这就是解析`jwt-go`的token的步骤。请注意,需要根据自己的实际情况修改代码中的token字符串和自定义声明结构体。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [(4)go web开发之 JWT-Token认证机制Access Token与Refresh Tokenjwt-go 库介绍及在项目中使用](https://blog.csdn.net/pythonstrat/article/details/121875782)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值