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.
浙公网安备 33010602011771号