讲师中心 微信公众号
AI工具推荐 视频效率加速

Qoder开发Spring Boot项目如何添加JWT认证?

云枫君_5397

云枫君_5397

发布时间:2026-08-09 18:58:19

|

147人浏览过

|

来源于php中文网

原创

要在Qoder的Spring Boot项目中添加JWT认证,必须绕过Spring Security默认表单登录,手动接管Token解析与认证上下文注入;需引入jjwt-api、jjwt-impl、jjwt-jackson三个依赖(版本0.11.5),配置Base64编码32字节以上密钥,编写JwtUtil封装生成/解析/校验逻辑,实现JwtAuthenticationFilter注入Authentication到SecurityContext,并在SecurityConfig中正确配置过滤器顺序及无状态策略。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

qoder开发spring boot项目如何添加jwt认证?

要在Qoder开发的Spring Boot项目中添加JWT认证,必须绕过Spring Security默认的表单登录流程,手动接管Token解析与认证上下文注入,否则前端携带Bearer Token的请求会直接被拒绝或重定向到登录页。

添加JWT核心依赖

打开pom.xml,在<dependencies>中插入以下三项:

<dependency><br>  <groupId>io.jsonwebtoken</groupId><br>  <artifactId>jjwt-api</artifactId><br>  <version>0.11.5</version><br></dependency><br><dependency><br>  <groupId>io.jsonwebtoken</groupId><br>  <artifactId>jjwt-impl</artifactId><br>  <version>0.11.5</version><br>  <scope>runtime</scope><br></dependency><br><dependency><br>  <groupId>io.jsonwebtoken</groupId><br>  <artifactId>jjwt-jackson</artifactId><br>  <version>0.11.5</version><br>  <scope>runtime</scope><br></dependency>

注意:不能使用0.9.x老版本,它不支持Java 17+的模块化反射机制,运行时会抛NoClassDefFoundError: javax/xml/bind/DatatypeConverter

配置JWT密钥与参数

application.yml中新增JWT配置块:

jwt:<br>  secret: <strong>【必须是Base64编码的32字节以上随机密钥】</strong><br>  expiration: 86400<br>  header: Authorization<br>  token-prefix: Bearer

生成密钥推荐用命令:openssl rand -base64 32。如果直接写明文字符串(如“mySecretKey”),签名将被轻易伪造,【所有环境都必须用不同密钥】

编写JwtUtil工具类

创建JwtUtil.java,封装Token生成与解析逻辑:

① 定义generateToken(String username, Map<String, Object> claims)方法,用Jwts.builder()设置subject、claims、issuedAt、expiration,并调用signWith(SignatureAlgorithm.HS512, secretKey)

② 定义getUsernameFromToken(String token),先去掉Bearer 前缀,再用Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody().getSubject()提取用户名;

Spring Boot 3.3.13
Spring Boot 3.3.13

Spring Boot下载页提供 3.3.13 官方源码 ZIP,并整理快速入门、项目创建、配置和自动配置说明。

下载

③ 定义validateToken(String token),捕获ExpiredJwtExceptionUnsupportedJwtExceptionMalformedJwtExceptionSignatureException四类异常并返回false,其余情况返回true。

实现自定义认证过滤器

创建JwtAuthenticationFilter.java,继承OncePerRequestFilter

方法一:重写doFilterInternal,从request.getHeader("Authorization")取值→检查是否以"Bearer "开头→截取token→调用jwtUtil.validateToken()→若通过则解析出username→查库获取UserDetails→构建UsernamePasswordAuthenticationToken→设置SecurityContextHolder.getContext().setAuthentication(authentication)

方法二:在构造函数中注入AuthenticationManager,但此方式需提前注册DaoAuthenticationProvider,容易与后续密码校验逻辑冲突,不推荐。

这一步漏掉SecurityContextHolder.getContext().setAuthentication(...),后续@PreAuthorize注解永远不生效——因为SecurityContext里根本没放Authentication对象。

配置Spring Security链

创建SecurityConfig.java,标注@Configuration@EnableWebSecurity

第一步:声明@Bean返回PasswordEncoder,用BCryptPasswordEncoder而非NoOpPasswordEncoder,后者已废弃且明文存储密码;

第二步:声明@Bean返回AuthenticationManager,调用auth.authenticationManagerBean()

第三步:重写configure(HttpSecurity http),执行http.csrf().disable().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).authorizeHttpRequests(authz -> authz.requestMatchers("/login", "/register", "/actuator/**").permitAll().anyRequest().authenticated()).addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class)

关键点:【addFilterBefore必须放在authorizeHttpRequests之后】,否则过滤器链顺序错乱,Token校验永远不被执行。

热门AI工具

更多
二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2111

2025.08.06

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

397

2026.01.26

Qoder大模型教程大全
Qoder大模型教程大全

本专题整合了Qoder大模型教程合集,阅读专题下面的文章了解更多详细内容。

352

2026.05.21

Qoder安装与快速上手攻略
Qoder安装与快速上手攻略

面向开发者的 Qoder 快速上手指南,从 Qoder 的产品定位(新一代智能体编程平台)与通义灵码的关系讲起,涵盖 Qoder IDE 客户端下载安装、VS Code / JetBrains 插件的安装与账号登录配置、工作区界面布局与功能模块认识、NEXT(下一条编辑建议)智能补全体验、行间会话(Inline Chat)快速编码、右侧面板 Ask 问答与 Agent 模式初探,帮助开发者快速上手 Qoder 并感受 AI 原生编程的效

325

2026.05.21

Qoder部署与配置教程大全
Qoder部署与配置教程大全

本专题整合了Qoder部署与配置教程合集,阅读专题下面的文章了解更多的详细内容。

245

2026.05.21

Qoder Agent 模式与全栈自主开发教程合集
Qoder Agent 模式与全栈自主开发教程合集

聚焦 Qoder 最核心的 Agent 智能体编程模式,讲解从自然语言需求描述到完整代码自动生成的全流程操作,涵盖 Agent 模式的启动与任务下发、需求理解与技术方案自动拆解、多文件创建与跨文件代码编排、前后端全栈项目一键生成实战(以电商页面 / API 服务 / 管理后台为例)、人机交互检查点(Checkpoint)的审查与干预、Agent 执行过程的上下文追踪与回滚,帮助开发者从"辅助编码"进阶到"陈

668

2026.05.22

NumPy常见函数使用方法
NumPy常见函数使用方法

本专题整理 NumPy 常见函数使用方法相关教程,覆盖函数大全、参数用法、数组运算、统计聚合、排序处理、where 条件筛选、linspace 创建数列等常用场景,帮助读者快速掌握 NumPy 函数调用思路和实际数据处理技巧。

0

2026.09.22

NumPy性能优化版本更新与常见报错排查
NumPy性能优化版本更新与常见报错排查

本专题整理 NumPy 性能优化、版本更新与常见报错排查相关教程,覆盖向量化计算、广播性能、内存布局、NumPy 2.0 升级、版本兼容冲突、安装导入报错、dtype 溢出、矩阵运算异常和 broadcasting 报错修复,帮助读者系统掌握 NumPy 性能调优与问题定位方法。

20

2026.09.22

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

20

2026.09.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Qoder手册
Qoder手册

共0课时 | 0人学习

Spring Boot 官方快速入门指南
Spring Boot 官方快速入门指南

共0课时 | 0人学习

Spring Boot 官方参考文档
Spring Boot 官方参考文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn