spring boot 3.2 + jwt 完整鉴权方案已生成:含 user 实体、jwtutil 工具类(支持 yml 配置密钥)、jwtauthenticationfilter(含 securitycontext 设置)、securityconfig(启用 @enablemethodsecurity)、@preauthorize 权限控制及测试接口。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在 Spring Boot 项目中快速实现 JWT 登录鉴权功能,跳过手写 Token 生成、解析、拦截器配置等重复劳动,直接获得可运行的完整代码结构。
安装并启用 CodeGeex 插件
打开 VS Code → 左侧扩展商店 → 搜索 “CodeGeex” → 点击安装 → 安装完成后点击右下角 “启用” 按钮 → 重启编辑器使插件生效。
这一步必须完成,否则后续所有命令都无法触发。插件图标会出现在左侧活动栏底部,未出现说明未正确加载。
用自然语言描述需求并触发生成
新建一个空白文件,保存为 jwt-auth-req.md,在其中写入以下内容:
“基于 Spring Boot 3.2 + Java 17,生成完整的 JWT 身份验证与授权逻辑:包含 User 实体类、登录接口返回 token、JWT 工具类(含密钥、过期时间、签发与校验)、登录拦截器(校验 token 并设置 SecurityContext)、角色权限注解 @PreAuthorize(‘hasRole(‘ADMIN’)’),以及一个带权限控制的测试接口。”
选中这段文字 → 右键 → 选择 “CodeGeex: Generate Code from Selection” → 等待几秒,右侧将弹出生成结果预览窗口。
筛选并导入生成代码
预览窗口中会出现多个代码块,按以下顺序确认并复制:
① 找到标注为 【User.java】 的实体类代码 → 全选 → 复制 → 粘贴到 src/main/java/com/example/demo/entity/User.java;
② 找到 【JwtUtil.java】 工具类 → 注意检查密钥是否为硬编码字符串(如 “mySecretKey123456”)→ 若项目已配置 application.yml,则需手动替换为 @Value("${jwt.secret}") → 复制后粘贴至 src/main/java/com/example/demo/util/JwtUtil.java;
③ 找到 【JwtAuthenticationFilter.java】 → 该类必须继承 OncePerRequestFilter → 若生成代码中缺少 setSecurityContext() 调用,会导致权限注解失效 → 补齐如下逻辑:
SecurityContextHolder.getContext().setAuthentication(authentication);
CodeGeeX 2.21.0是智谱AI推出的AI编程助手版本,对Inline Chat功能进行了重大优化,包括UI设计升级、支持流式输出以提升响应速度,并新增“查看思路”按钮以便理解代码原理。同时,该版本在编辑器中新增CodeLens控件,支持一键“解释”代码或“添加注释”。目前该工具对个人开发者免费开放。
④ 最后复制 【SecurityConfig.java】 配置类 → 确保启用了 @EnableMethodSecurity 注解 → 否则 @PreAuthorize 不生效 → 粘贴到 src/main/java/com/example/demo/config/SecurityConfig.java。
补全依赖与配置
打开 pom.xml,在 <dependencies></dependencies> 中添加以下三项:
在 application.yml 中添加:
jwt:
secret: your-32-byte-secret-key-here
expiration: 86400000
【secret 必须是 32 字节 Base64 编码字符串,否则 JwtException 会抛出 “Invalid key”】 可用在线工具生成,或执行:openssl rand -base64 32。
启动并验证接口
运行主类 → 访问 http://localhost:8080/login → POST 提交 JSON:
{“username”: “admin”, “password”: “123456”} → 成功返回 JWT 字符串。
复制该 token → 访问 http://localhost:8080/api/admin → 在 Headers 中添加:
Authorization: Bearer










