`
dannyhz
  • 浏览: 395179 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

jwt 的一个例子

 
阅读更多
解析和 生成 token
引用

https://blog.csdn.net/qq_40081976/article/details/79046825


package com.zyd.jwt;

import java.util.Date;

import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
import java.security.Key;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

public class JwtHelper {

	    private final static String base64Secret = "MDk4ZjZiY2Q0NjIxZDM3M2NhZGU0ZTgzMjYyN2I0ZjY=";
	    private final static int expiresSecond = 172800000;

	    public static Claims parseJWT(String jsonWebToken) {
	        try {
	            Claims claims = Jwts.parser()
	                    .setSigningKey(DatatypeConverter.parseBase64Binary(base64Secret))
	                    .parseClaimsJws(jsonWebToken).getBody();
	            return claims;
	        } catch (Exception ex) {
	            return null;
	        }
	    }

	    public static String createJWT(String username, String roles, String privileges) {
	        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;

	        long nowMillis = System.currentTimeMillis();
	        Date now = new Date(nowMillis);

	        //生成签名密钥
	        byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(base64Secret);
	        Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());

	        //添加构成JWT的参数
	        JwtBuilder builder = Jwts.builder().setHeaderParam("typ", "JWT")
	                .claim("user_name", username)
	                .claim("user_role", roles)
	                .claim("user_privilege", privileges)
	                .signWith(signatureAlgorithm, signingKey);
	        //添加Token过期时间
	        if (expiresSecond >= 0) {
	            long expMillis = nowMillis + expiresSecond;
	            Date exp = new Date(expMillis);
	            builder.setExpiration(exp).setNotBefore(now);
	        }

	        //生成JWT
	        return builder.compact();
	    }
}

<dependency>
		<groupId>io.jsonwebtoken</groupId>
	    <artifactId>jjwt</artifactId>
	    <version>0.7.0</version>
    </dependency>
分享到:
评论

相关推荐

    jwt完整无框架web例子+登录+跨域web demo

    这个"jwt完整无框架web例子+登录+跨域web demo"是一个基于JWT实现的简单Web应用程序,它包含了登录验证功能,并且支持跨域访问。下面我们将详细探讨JWT、无框架Web开发以及如何在Java中实现登录验证和跨域处理。 1....

    php实现JWT(json web token)鉴权实例详解

    JWT由三个部分组成:header.payload.signature 以下示例以JWT官网为例 header部分: { alg: HS256, typ: JWT } 对应base64UrlEncode编码为:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 说明:该字段为jso

    spring boot jwt Interceptor 例子

    spring boot jwt 和 interceptor的例子。 其中jwt的例子网上有很多,但是都是要数据库支持,这个只是用假数据模拟,不需要数据库支持。另外还有一个拦截器的简单例子。已经在sts 4 测试通过。

    netCore3.1 WebApi 使用JWT 授权认证使用实例

    JWT是一种轻量级的身份验证和授权机制,它允许服务端通过发送一个包含所有必要的用户信息的令牌,而不是发送会话ID。在本文中,我们将深入探讨如何在.NET Core 3.1 Web API项目中实现JWT授权认证,并结合Swagger进行...

    JWT实例demo

    JSON Web Token(JWT)是一种开放的标准(RFC 7519),定义了一种紧凑的、自包含的方式来安全地在各方之间传输信息作为一个JSON对象。这个信息可以被验证和信任,因为它是数字签名的。JWT被广泛用于身份验证和授权,...

    springboot+springSecurity+jwt实现登录认证后令牌授权

    总的来说,这个项目展示了如何结合Spring Boot、Spring Security和JWT来实现一个安全的登录认证系统,以及如何利用MyBatisPlus简化数据库操作。通过这个实现,开发者可以快速构建一个安全的、基于令牌的Web服务,为...

    jwt composer包

    这个例子展示了如何创建一个包含有效负载的JWT,以及如何解码和验证它。在实际应用中,通常会将JWT存储在HTTP的Authorization头中,或者作为查询参数传递,以便服务器验证用户的凭证。 JWT的使用有很多优点,比如...

    jwt-handbook

    签名用于验证消息在传输过程中是否被篡改,通过将头部和负载进行编码,然后与一个密钥结合,使用指定的算法计算得出。 书中详细讨论了JWT的生成和验证过程,以及如何在客户端和服务器之间安全地传递。它还涉及了JWT...

    WebApiDemo(net6+swagger+jwt)

    WebApiDemo是一个基于.NET 6框架的Web API项目,它集成了Swagger用于接口文档的展示与测试,同时引入了JWT(JSON Web Token)进行身份验证和授权管理。这个项目是用Visual Studio 2022开发环境构建的,旨在提供一个...

    netcore+webapi+jwt+oauth2+swagger的例子

    解决方案包含五个项目 1.WebApiClient:控制台调用接口项目 2.WebApiTest:.NetCore+jwt+swagger编写的接口 3.WebApiTest.ApiOauth2:.Net4.5+oauth2+swagger编写的接口 4.WebApiTest.ApiController:.Net4.5+jwt+...

    PyPI 官网下载 | sanic-jwt-payload-encrypt-1.0.0.tar.gz

    Sanic-JWT-Payload-Encrypt 是一个基于 Python 的库,专为 Sanic 框架设计,用于处理 JWT(JSON Web Token)的加密负载。Sanic 是一个快速、可异步操作的 HTTP 服务器框架,它允许开发者用 Python 的自然语法来编写...

    jwtdemo.zip

    这个压缩包提供了一个实际应用中的例子,展示了如何在gRPC服务中集成JWT来确保安全的通信。 【描述】"go grpc jwt实现" 指的是使用Go语言开发的gRPC服务,它采用了JWT作为身份验证机制。gRPC是一种高性能、开源和...

    Demo.Jwt-master20200728.rar

    JWT是由三段信息构成的。分别是header、playload、signature。...在网上搜索了很多JWT的例子,每个人的例子思路差不多,代码的表现形式不一样。本人在学习asp.net core的JWT的过程中,把研究的例子上传记录下。

    两个rest服务之间的安全jwt

    demo发起rest请求,demo1接收请求。 ...demo请求其他的demo1的接口,在json中加入token,demo1...这个例子中token中的signature部分只存了username,还可以存其他的比如请求ip。 很多方法、json格式等细节写的还是不地道。

    一个Go Golang后端干净架构项目,包含Gin MongoDB JWT认证中间件测试和Docker.zip

    在这个项目中,JWT认证中间件就是一个例子,它会在每个请求到达业务逻辑之前检查JWT的有效性。 6. **测试**: 项目中可能包含了测试代码,这有助于确保代码质量,通过断言和模拟来验证函数或组件的行为是否符合预期...

    jwt token 实现

    6. JWT的过期时间:JWT通常包含一个`exp`(过期时间)声明,允许设置令牌的有效期限。超过这个期限,JWT将不再有效,需要用户重新登录获取新的JWT。 在“jwt-master”这个压缩包中,可能包含了实现上述流程的示例...

    Laravel开发-jwt-auth

    在 Laravel 开发中,JWT-Auth 是一个非常流行的库,用于实现基于 JSON Web Tokens (JWT) 的身份验证。JWT 提供了一种安全、简洁的方式来代表用户的身份,它可以在客户端和服务器之间传递,而无需在每个请求中发送...

    基于springboot+springSecurity+jwt实现的基于token的权限管理的一个demo,适合新手

    本Demo以SpringBoot为核心框架,结合SpringSecurity进行安全控制,并利用JWT(JSON Web Token)进行令牌验证,为新手提供了一个学习和实践的基础平台。下面我们将详细探讨这些技术的使用和整合。 **1. SpringBoot**...

    REST2SQL11 基于jwt-go生成token与验证

    在本主题中,我们将深入探讨如何使用`jwt-go`库在Go语言中生成和验证JSON Web Tokens(JWT),这是RESTful API设计中的一个重要组件。JWT是一种轻量级的身份验证机制,用于安全地传递信息,而无需在服务器之间共享...

    gin-jwt:JWT Gin中间件框架

    用于Gin框架的JWT中间件 这是框架的中间件。 它使用提供jwt身份验证中间件。 它提供了其他处理程序功能以提供将生成令牌的login api和可用于刷新令牌的其他refresh处理程序。 ...例子 请参阅示例

Global site tag (gtag.js) - Google Analytics