基于SpringBoot3.2与Java17,通过CodeGeex自然语言生成JWT鉴权代码,含User实体、JwtUtil、JwtAuthenticationFilter、SecurityConfig及@PreAuthorize。导入后需补全依赖和yml密钥配置(32字节Base64),启动测试登录接口返回token及权限。
如果你正在找一套能在 Spring Boot 3.2 里直接跑起来的 JWT 鉴权方案,那么这篇文章应该能帮你省下不少手写代码的时间。整套方案已经完整落地,涵盖了 User 实体类、JwtUtil 工具类(支持 yml 配置密钥)、JwtAuthenticationFilter 过滤器(自带 SecurityContext 设置)、SecurityConfig 配置(已启用 @EnableMethodSecurity),还有基于 @PreAuthorize 的权限控制以及测试接口。直接拿去用,不需要再从零搭积木。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
说白了,你只需要按部就班地把代码复制进去,再补上必要的依赖和配置,整个鉴权流程就能跑通。接下来,我们从第一步开始走起。
先打开 VS Code,在左侧的扩展商店里搜一下“CodeGeex”,点击安装。安装完成后,记得点一下右下角的“启用”按钮,然后重启编辑器,确保插件正式生效。这一步不能省略,否则后续所有的生成命令都没法触发。插件正确加载后,图标会出现在左侧活动栏的底部,如果没看到,说明加载过程出了问题,需要检查一下。
新建一个空白文件,保存为 jwt-auth-req.md,然后在里面写入以下这段描述:
“基于 Spring Boot 3.2 + Ja va 17,生成完整的 JWT 身份验证与授权逻辑:包含 User 实体类、登录接口返回 token、JWT 工具类(含密钥、过期时间、签发与校验)、登录拦截器(校验 token 并设置 SecurityContext)、角色权限注解 @PreAuthorize(‘hasRole(‘ADMIN’)’),以及一个带权限控制的测试接口。”
写完以后,选中这段文字,右键,选择“CodeGeex: Generate Code from Selection”。等上几秒钟,右侧会弹出生成结果的预览窗口,里面就是 AI 帮你生成的所有代码碎片。
预览窗口里会出现多个代码块,按下面的顺序逐一确认并复制:
① 找到标注为 【User.ja va】 的实体类代码,全选、复制,粘贴到 src/main/ja va/com/example/demo/entity/User.ja va;
② 找到 【JwtUtil.ja va】 工具类,仔细检查密钥部分——如果生成出来的是硬编码字符串(比如 “mySecretKey123456”),而你的项目已经配置了 application.yml,那就需要手动改成 @Value("${jwt.secret}"),再粘贴到 src/main/ja va/com/example/demo/util/JwtUtil.ja va;
③ 找到 【JwtAuthenticationFilter.ja va】,这个类必须继承 OncePerRequestFilter。如果生成代码里没有 setSecurityContext() 的调用,权限注解会直接失效,所以务必补齐下面这行逻辑:
SecurityContextHolder.getContext().setAuthentication(authentication);
④ 最后,复制 【SecurityConfig.ja va】 配置类,确认里面已经启用了 @EnableMethodSecurity 注解——这个注解不加上,@PreAuthorize 怎么写都不会生效。粘贴到 src/main/ja va/com/example/demo/config/SecurityConfig.ja va。
打开 pom.xml,在 里补上这三个依赖:
然后在 application.yml 里加上:
jwt:
secret: your-32-byte-secret-key-here
expiration: 86400000
这里有个容易踩的坑——secret 必须是 32 字节的 Base64 编码字符串,否则运行时会直接抛出 “Invalid key” 异常。最简单的方式是用 openssl 生成一个:openssl rand -base64 32,或者去网上找在线工具也行。
剩下的就是启动主类,跑起来测试一眼。访问 http://localhost:8080/login,用 POST 提交下面这个 JSON:
{“username”: “admin”, “password”: “123456”},如果能成功返回一串 JWT 字符串,说明登录接口已经正常工作。
拿到 token 后,再访问 http://localhost:8080/api/admin,在请求头里加上:
Authorization: Bearer <你的token>,如果返回 200,那恭喜,整套鉴权链路已经打通了。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述