随笔 - 633,  文章 - 0,  评论 - 13,  阅读 - 48万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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   大话人生  阅读(191)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示