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

通义灵码如何写权限验证逻辑 AI辅助实现JWT认证方法

酷伟小哥_3144

酷伟小哥_3144

发布时间:2026-06-01 06:01:23

|

391人浏览过

|

来源于php中文网

原创

Spring Boot中JWT权限验证需配置jjwt依赖(0.12.5)、JwtProperties、JwtUtil工具类(含token生成/解析/校验)、继承OncePerRequestFilter的认证过滤器(须在UsernamePasswordAuthenticationFilter前注册),并启用@EnableGlobalMethodSecurity(prePostEnabled = true)配合@PreAuthorize实现方法级权限控制。

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

通义灵码如何写权限验证逻辑 ai辅助实现jwt认证方法

在Spring Boot项目中快速实现JWT权限验证逻辑,需要让通义灵码准确理解认证流程、Token生成与校验边界、以及拦截器与注解的配合方式。

准备JWT依赖与配置类

在pom.xml中添加jjwt-api、jjwt-impl、jjwt-jackson依赖,版本统一为0.12.5;旧版0.11.x存在Jackson反序列化漏洞,【必须升级】。

新建JwtProperties配置类,用@ConfigurationProperties(prefix = "jwt")绑定yml中的密钥、过期时间、签发者等字段,注意密钥长度不能低于256位,否则HS256算法会抛IllegalArgumentException。

在application.yml中写入jwt.secret: "your-32-byte-secret-key-here-123456789012",密钥必须是BASE64编码字符串或原始字节数组长度32,硬编码仅用于本地调试,生产环境务必改用环境变量注入。

定义JWT工具类生成与解析Token

创建JwtUtil工具类,提供generateToken(UserDetails user)方法:用Jwts.builder()设置subject(用户ID)、claims(角色列表)、过期时间(exp)、签发时间(iat)和签发者(iss),最后用HmacSHA256签名。

提供getUsernameFromToken(String token)方法:先去掉Bearer前缀,再用Jwts.parserBuilder().setSigningKey(jwtProperties.getSecret()).build()解析,捕获ExpiredJwtException、UnsupportedJwtException等异常并返回null——这是关键容错点,避免未授权请求直接崩掉过滤器链。

提供validateToken(String token, UserDetails userDetails)方法:校验token是否未过期、用户名是否匹配、签名是否有效。注意这里不校验角色,角色校验应由@PreAuthorize在Controller层完成,否则会导致权限变更延迟生效。

编写JWT认证过滤器

继承OncePerRequestFilter,重写doFilterInternal方法。

通义灵码 Linux版
通义灵码 Linux版

通义灵码 Linux版是阿里云推出的一款AI智能编码助手,专为Linux开发者设计。它支持在Linux操作系统下的JetBrains IDEs、Visual Studio Code等主流集成开发环境中运行。该工具基于通义大模型,提供代码智能生成、实时续写、单元测试生成、代码优化以及研发智能问答等功能,旨在帮助Linux用户在编码过程中提升效率。

下载

第一步:从HttpServletRequest的Authorization头中提取token,格式为“Bearer ”,若为空或不以Bearer开头,直接chain.doFilter(request, response)放行,交由后续过滤器处理登录接口。

第二步:调用JwtUtil.getUsernameFromToken(token),若返回null,说明token无效,构造Response返回401状态码并中断流程;若非空,则查UserDetailsService加载用户完整信息。

第三步:将用户信息封装为UsernamePasswordAuthenticationToken,设置到SecurityContextHolder.getContext().setAuthentication(authentication),这一步完成后,@PreAuthorize注解才能正确读取当前用户角色。

注意:该过滤器必须在UsernamePasswordAuthenticationFilter之前注册,否则登录成功后无法及时注入认证上下文。

启用方法级权限控制

在启动类上添加@EnableGlobalMethodSecurity(prePostEnabled = true)注解,开启@PreAuthorize支持。

方法一:在Controller方法上加@PreAuthorize("hasRole('ADMIN')"),表示仅ADMIN角色可访问;角色名需与UserDetails.getAuthorities()返回的GrantedAuthority.getAuthority()值完全一致,通常为"ROLE_ADMIN"而非"ADMIN",【若数据库存的是ADMIN,需在UserDetails实现中手动拼接"ROLE_"前缀】。

方法二:使用表达式@PreAuthorize("hasAnyRole('ADMIN','USER') or #id == authentication.principal.id"),支持复杂逻辑,其中#id是方法参数名,authentication是SecurityContext中自动注入的对象。

方法三:对整个Controller类加@RestControllerAdvice + @ExceptionHandler(JwtException.class),统一返回JSON格式错误响应,避免默认的白页报错暴露堆栈。

热门AI工具

更多
WorkBuddy

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

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

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

DeepSeek

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

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

二狗PPT
二狗PPT Hot

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

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

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

相关专题

更多
通义灵码下载安装教程
通义灵码下载安装教程

通义灵码下载专区提供最新版通义灵码官方下载、历史版本、安装教程、插件配置、VS Code 与 JetBrains IDE 接入指南,帮助开发者快速完成 AI 编程环境部署。

167

2026.05.29

通义灵码智能代码生成教程大全
通义灵码智能代码生成教程大全

通义灵码 AI 编程专区聚焦代码生成、智能补全、单元测试、代码解释、Agent 自动开发等功能,帮助开发者提升编码效率与研发质量。

255

2026.05.29

通义灵码工具合集
通义灵码工具合集

通义灵码开发工具专区收录 VS Code、Docker、Postman、Git、Navicat、Apifox 等热门开发工具,打造完整 AI 编程开发环境。

348

2026.05.29

通义灵码安装配置使用教程大全
通义灵码安装配置使用教程大全

通义灵码安装教程专区提供 VS Code、JetBrains、Visual Studio 等 IDE 的详细安装配置步骤,并包含 AI 补全、代码生成、智能问答等功能使用指南。

290

2026.05.29

通义灵码插件使用教程大全
通义灵码插件使用教程大全

本专题整合了通义灵码插件使用教程,阅读专题下面的文章了解更多详细内容。

345

2026.05.29

通义灵码提示词高效编码技巧
通义灵码提示词高效编码技巧

本专题汇总了通义灵码提示词从入门到精通的完整教程,涵盖基础指令写法、代码生成优化、项目级上下文设置及常见报错调试技巧。同时整理了多场景实战案例、高效编码模板与避坑指南,助你精准控制AI输出,大幅提升开发效率,轻松写出高质量代码。

75

2026.06.03

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

80

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

40

2026.09.30

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
FastAdmin小白入门课程
FastAdmin小白入门课程

共63课时 | 11.5万人学习

通义灵码手册
通义灵码手册

共0课时 | 0人学习

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

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