Springboot实现简单JWT登录鉴权

这篇具有很好参考价值的文章主要介绍了Springboot实现简单JWT登录鉴权。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

登录为啥需要鉴权?

登录需要鉴权是为了保护系统的安全性和用户的隐私。在一个 Web 应用中,用户需要提供一定的身份信息(例如用户名和密码)进行登录,登录后系统会为用户生成一个身份令牌(例如 JWT Token)来标识用户的身份。

鉴权的主要目的是确保只有经过身份验证的用户才能访问系统的受限资源和功能。未经鉴权的用户不能访问系统的敏感信息和功能,从而保护系统的数据和用户的隐私。

为什么选择JWT做登录鉴权?

选择 JWT(JSON Web Token)做登录鉴权有以下几个主要优点:

1.无状态

JWT 是无状态的,即服务端不需要保存用户的登录状态。所有的用户信息都包含在 JWT 中,因此服务端不需要在后台存储用户的登录信息。这样可以降低服务端的存储压力,也减少了服务端与客户端之间的通信次数,提高了系统的性能和可扩展性。

2.安全性

JWT 使用数字签名来保证 Token 的完整性和安全性。服务端在生成 JWT 时使用密钥对头部和载荷进行签名,客户端在接收到 JWT 后,可以通过验证签名来判断 Token 是否被篡改。这样可以防止 Token 被伪造或篡改,增强了系统的安全性。

3.跨平台支持

JWT 是基于 JSON 格式的标准化令牌,可以在不同平台之间方便地传递和解析。客户端可以将 JWT 存储在 Cookie、LocalStorage 或 SessionStorage 中,同时可以在移动端和 Web 端之间共享使用。

4.可扩展性

JWT 载荷部分可以自定义,可以存储用户的角色、权限、自定义字段等信息。这样可以在 Token 中携带更多的用户信息,减少多次查询数据库的开销,提高系统的性能。

5.简化权限管理

JWT 中可以包含用户的角色和权限信息,这样可以简化权限管理逻辑。服务端可以根据用户的角色和权限来控制用户对不同资源的访问权限,从而实现细粒度的权限控制。

JWT是token吗?

是的,JWT(JSON Web Token)是一种 Token 的实现方式。Token 是一种用于身份验证和授权的令牌,用于在客户端和服务端之间传递用户的身份信息。

JWT 是一种基于 JSON 的安全令牌,由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。这三部分分别使用 Base64 编码,并用点号连接起来,形成一个字符串,即 JWT。

实现一个简单的springboot拦截器token例子

1.创建拦截器类 TokenInterceptor.java:
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TokenInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 在这里进行 Token 鉴权逻辑
        // 获取请求头中的 Token
        String token = request.getHeader("Authorization");
        if (token == null || !token.startsWith("Bearer ")) {
            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
            return false;
        }

        // 假设这里对 Token 进行验证,验证通过则放行,否则返回 401 未授权状态码
        // 这里只是简单示例,实际中可以根据业务需求来验证 Token 的有效性
        boolean isValidToken = validateToken(token.substring(7)); // 去除 "Bearer " 前缀
        if (!isValidToken) {
            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
            return false;
        }

        return true;
    }

    private boolean validateToken(String token) {
        // 假设这里对 Token 进行验证,验证通过返回 true,否则返回 false
        // 可以使用 JwtUtils 工具类来验证 Token 的有效性
        // 注意:在实际应用中,需要根据业务需求和安全要求来验证 Token
        return true;
    }
}

2.注册拦截器:

在 Spring Boot 主类中注册拦截器,使其生效:文章来源地址https://www.toymoban.com/news/detail-641293.html

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@SpringBootApplication
public class MyApplication implements WebMvcConfigurer {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new TokenInterceptor())
                .addPathPatterns("/api/**"); // 拦截指定路径的请求
    }
}

3.创建一个简单的 Controller
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/api/hello")
    public String hello() {
        return "Hello, World!";
    }
}

到了这里,关于Springboot实现简单JWT登录鉴权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Android前端+Spring Boot后端 登录功能实现

    创建项目后,自己添加包,框架如下   userController里的一些内容,只供参考,代码不全,无法实现 数据库是直接在社区版IDEA里连接Mysql,在控制台端创建的数据库和user表,用于数据交互。 Activity包里是Activity Java类,主要响应layout包里activity_login.xml等页面布局内的按钮响应 a

    2024年02月12日
    浏览(67)
  • 微信小程序一键登录功能,使用uni-app和springboot(JWT鉴权)

    目录 概述 微信登录接口说明  关于获取微信用户的信息 前端代码(uni-app) 后端代码(SpringBoot) 配置文件:application.yml  配置文件:Pom.xml  类:WeChatModel    类:WeChatSessionModel  类:UserInfoController 业务层实现类:UserInfoServiceImpl 工具类:JWTUtils 拦截器配置-自定义拦截器

    2024年02月09日
    浏览(72)
  • springboot+jwt令牌简单登录案例

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

    2024年02月01日
    浏览(40)
  • JWT加密解密登录鉴权逻辑是什么?

    JWT(JSON Web Token)是一种用于进行认证和授权的开放标准,它可以安全地传输信息,通常用于实现身份验证和鉴权逻辑。 以下是使用JWT进行登录鉴权的一般逻辑: 1:用户登录: 用户提供用户名和密码进行登录。 服务器验证用户提供的凭据是否有效。 2:生成JWT: 服务器验证

    2024年02月06日
    浏览(36)
  • 微信小程序的授权登录-Java 后端 (Spring boot)

    微信开发文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 一个可以测试的微信小程序 此微信小程序的APPID和APPscret(至开发者后台获取) 从时序图我们可以了解到流程大致分为两步: 小程序端获取code后传给Java后台 Java后台获取code后向微信后台接口

    2024年02月09日
    浏览(53)
  • ASP.NET CORE WEBAPI 登录 JWT 鉴权 ,接口权限验证

    介绍 当今Web开发中,API的使用越来越广泛,而API的安全性也变得越来越重要。其中,JWT(JSON Web Token)鉴权和授权是一种常见的解决方案。 本篇文章将会介绍JWT鉴权和授权的原理、实现方式以及注意事项。 什么是JWT? JWT是一种基于JSON格式的开放标准(RFC7519),用于在网络

    2023年04月21日
    浏览(67)
  • spring boot +Sa-Token优雅的实现项目鉴权!

    最近在做登录、授权的功能,一开始考虑到的是spring boot + spring security,但spring security太重,而我们是轻量级的项目,所以,spring security不适合我们。 而后考虑spring boot + shiro,但shiro自带的aop会影响spring boot的aop,所以,shiro也不适合我们。 后来浏览github时,发现Sa-Token这个框

    2024年02月06日
    浏览(49)
  • SpringBoot+JWT实现单点登录解决方案

    一、什么是单点登录? 单点登录是一种统一认证和授权机制,指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的系统,不需要重新登录验证。 单点登录一般用于互相授信的系统,实现单一位置登录,其他信任的应用直接免登录的方式,在多个应用系统中,

    2024年02月12日
    浏览(43)
  • Springboot集成security,自定义@Anonymous标签实现免登录,免鉴权

            首先,项目springboot使用了2.6.8版本,集成security的过程中,使用了比较严格的自定义策略,任何请求都需要认证和授权,判断用户是否有查询改接口的权限。并且提供了配置或者注解两种方式提供匿名访问的接口。  第一种通过配置  第二种使用自定义注解  自己实

    2024年02月06日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包