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.

posted on 2022-08-23 10:52  大话人生  阅读(204)  评论(0)    收藏  举报