SpringBoot项目使用JWT令牌进行权限校验

这篇具有很好参考价值的文章主要介绍了SpringBoot项目使用JWT令牌进行权限校验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

要在Spring Boot中进行JWT校验,你需要遵循以下步骤:

1. 添加依赖

在你的pom.xml文件中添加以下依赖:

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

2. 创建JWT工具类

创建一个名为JwtUtil的工具类,用于生成和解析JWT令牌。

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.JwtException;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.util.StringUtils;

import java.util.Date;

public class JwtUtil {

    private static final String SECRET_KEY = "your_secret_key"; // 替换为你自己的密钥
    private static final long EXPIRATION_TIME = 86400000L; // 设置过期时间,例如1天(毫秒)

    public static String generateToken(String username) {
        return Jwts.builder()
                .setSubject(username)
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
                .signWith(SignatureAlgorithm.HS512, SECRET_KEY)
                .compact();
    }

    public static Claims parseToken(String token) {
        try {
            Jws<Claims> claimsJws = Jwts.parser()
                    .setSigningKey(SECRET_KEY)
                    .parseClaimsJws(token);
            return claimsJws.getBody();
        } catch (JwtException e) {
            throw new RuntimeException("Invalid token");
        }
    }

    public static boolean validateToken(String token) {
        try {
            Jws<Claims> claimsJws = Jwts.parser()
                    .setSigningKey(SECRET_KEY)
                    .parseClaimsJws(token);
            return true;
        } catch (JwtException e) {
            return false;
        }
    }
}

3. 在Controller中使用JWT工具类

在你的Controller中,使用JwtUtil工具类来验证请求头中的JWT令牌。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/secure")
    public String secureEndpoint(@RequestHeader("Authorization") String token) {
        if (!JwtUtil.validateToken(token)) {
            return "Invalid token";
        }

        Claims claims = JwtUtil.parseToken(token);
        String username = claims.getSubject();

        // 你的业务逻辑
        return "Hello, " + username;
    }
}

现在,当用户访问/secure端点时,系统会检查请求头中的JWT令牌是否有效。如果令牌无效,将返回"Invalid token"。如果令牌有效,将返回用户的用户名。文章来源地址https://www.toymoban.com/news/detail-816467.html

到了这里,关于SpringBoot项目使用JWT令牌进行权限校验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • .NET、VUE利用RSA加密完成登录并且发放JWT令牌设置权限访问

    使用RSA.ToXmlString(Boolean) 方法生成公钥以及私钥。 创建一个get请求,将后端生成的公钥发送给前端,需要注意,这里生成的公钥是XML格式需要转换为pkcs8格式,前端JS只能处理pkcs8格式,私钥不能发给前端!!!! 这里需要安装一个包XC.RSAUtil用于转换格式。 Install-Package XC.RSA

    2024年02月08日
    浏览(31)
  • springboot登录认证JWT令牌

    在判断该人员 访问的路径是否合法 ,是否存在未登录就访问其他路径,这时候我们就需要,进行登录认证。其中有两种方法,一种是加上 过滤器 ,一种是进行 JWT令牌 。 令牌就是一段字符串,其要求承载业务数据减少后续请求查询数据库的次数和方篡改,保证信息的合法性

    2024年01月25日
    浏览(28)
  • springboot+jwt令牌简单登录案例

    JSON Web Token (JWT)是⼀个开放标准(RFC 7519),它定义了⼀种紧凑的、⾃包含的⽅式,⽤于 作为JSON对象在各⽅之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。 1.1 什么时候应该⽤JWT? Authorization (授权) : 这是使⽤JWT的最常⻅场景。⼀旦⽤⼾登录,后续每个请

    2024年02月01日
    浏览(28)
  • web学习--登录认证--会话技术--cookie--session--令牌--java-jwt使用--jjwt使用

    前置学习: http springmvc 会话:用户打开浏览器,访问web服务器资源,会话建立,直到有一方断开连接会话结束,一次会话可以多次请求和连接 会话跟踪:一种维护浏览器状态的方式,服务器需要识别多次请求是否来自同一浏览器,以便同一次会话多次请求间共享数据。 cooki

    2024年02月15日
    浏览(51)
  • 3-2. SpringBoot项目集成【用户身份认证】实战 【实战核心篇】基于JWT生成和校验Token

    书接上文 技术选型篇,我们做了【用户身份认证】的技术选型说明,对基于 Session、Token、JWT 的方案进行了详细的对比分析,详细说明了它们都是什么和各自的优缺点!这些是实战的基础,还没看过的同学,建议先看上文。最终采用的是目前流行的 基于JWT的Token用户身份认证

    2023年04月08日
    浏览(35)
  • JWT解密:探秘令牌魔法与Java的完美交互

    JWT 简称 JSON Web Token,也就是通过 JSON 形式作为 Web 应用中的令牌,用于各方之间安全地将信息作为 JSON 对象传输,在数据传输的过程中还可以完成数据加密、签名等相关处理。 注意:JWT 的三个部分的 Header 和 Payload都是明文存储!只不过内容通过 Base64 转码了!所以不要将重

    2024年02月02日
    浏览(28)
  • SpringCloud gateway+Spring Security + JWT实现登录和用户权限校验

    原本打算将Security模块与gateway模块分开写的,但想到gateway本来就有过滤的作用 ,于是就把gateway和Security结合在一起了,然后结合JWT令牌对用户身份和权限进行校验。 Spring Cloud的网关与传统的SpringMVC不同,gateway是基于Netty容器,采用的webflux技术,所以gateway模块不能引入spri

    2024年02月03日
    浏览(36)
  • JWT详解、JJWT使用、token 令牌

    在正式讲解JWT之前,我们先重温一下用户身份认证相关的一些概念: 服务器当中记录每一次的登录信息,从而根据客户端发送的数据来判断登录过来的用户是否合法。 缺点: 每个用户登录信息都会保存到服务器的session中,随着用户的增多服务器的开销会明显增大; 由于s

    2024年01月21日
    浏览(44)
  • SpringBoot使用JWT进行身份验证

    JWT身份验证的流程 用户登录 : 用户向服务器提供他们的用户名和密码。 服务器验证 :服务器接收到请求,验证用户名和密码。 生成JWT :如果用户名和密码验证通过,服务器将创建一个 JWT。 JWT 包含了一些数据(称为声明),例如用户 ID、用户名、令牌过期时间等。然后,

    2024年02月16日
    浏览(32)
  • springboot登录校验[JWT]

    前言 : 👏作者简介:我是笑霸final,一名热爱技术的在校学生。 📝个人主页:个人主页1 || 笑霸final的主页2 📕系列专栏:后端专栏 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🔥如果感觉博主的文章还不错的话,👍点赞👍 + 👀关注👀 + 🤏

    2023年04月17日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包