1.pom.xml中添加依赖:
<!--JWT配置依赖--> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.10.3</version> </dependency> <!--JWT配置依赖结束-->
2.编写工具类:包名下-utils-新建TokenUtils.java:
package com.example.demo.utils; import cn.hutool.core.date.DateUtil; import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import java.util.Date; public class TokenUtils { /* *生成token * 通用,传入userId和签名信息 * */ public static String getToken(String userId,String sign){ return JWT.create().withAudience(userId) //将user id 保存到token里面,作为载荷 .withExpiresAt(DateUtil.offsetHour(new Date(), 2)) //设置2消失后过期,第一个参数输入当前日期,第二个参数输入2小时,表示后延2小时 .sign(Algorithm.HMAC256(sign)); //以sign作为密钥,作为签名 } }
3.在登录服务接口中使用获取token
public UserDTO login(UserDTO userDTO) { QueryWrapper<SpiderdataSpiderxrmmw> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("img_people",userDTO.getUsername()); // queryWrapper.eq("password",userDTO.getPassword()); // SpiderdataSpiderxrmmw one = getOne(queryWrapper); //为了防止,数据库中有两个,然后会报错 // return one!=null; //解决方法1,返回一个list,只要有一个,就让通过 List<SpiderdataSpiderxrmmw> list = list(queryWrapper); if(list.size() !=0){ System.out.println("list.get(0):"); System.out.println(list.get(0)); //第一个参数为源数据,第二个参数为复制到的数据,第三个参数为true,表示忽略大小写 //复制的时候,只复制了同名字的 BeanUtil.copyProperties(list.get(0),userDTO,true); System.out.println("userDTO:"); System.out.println( userDTO); //设置token,传入userid,再用userid作为签名 String token= TokenUtils.getToken(list.get(0).getId().toString(),list.get(0).getId().toString()); System.out.println("userDTO_token:"); System.out.println( token); userDTO.setToken(token); //将获取到的token,设置到userDTO的token中, return userDTO; //返回userDTO }else{ //定义个一个异常,抛出去 throw new ServiceException(Constants.CODE_500,"系统错误"); }
4.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构