文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ssm项目如何实现用户登陆持久化

2023-06-14 18:29

关注

小编给大家分享一下ssm项目如何实现用户登陆持久化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

用户登录持久化就是每次访问不用账号密码来校验身份,在用户登录第一次之后会返回一个token字符串,之后的访问客户端将这个token加到请求体里发给服务器就可以验证身份了。

利用Jedis和JWT创建用户token

1、JWT创建token

maven依赖:

<dependency>            <groupId>com.auth0</groupId>            <artifactId>java-jwt</artifactId>            <version>3.3.0</version>        </dependency>

创建JWT工具类

用于创建token和解析token

import com.auth0.jwt.JWT;import com.auth0.jwt.JWTVerifier;import com.auth0.jwt.algorithms.Algorithm;import com.auth0.jwt.interfaces.Claim;import com.auth0.jwt.interfaces.DecodedJWT; public class JWTUtils {         private static String SECRET = "qiang";  //此处随便设置一个自己的加密符号    public static String createToken(int id, String username,                                      String type) throws Exception {        // 签发时间        Date iatDate = new Date();         // 过期时间,7天时间        Calendar nowTime = Calendar.getInstance();        nowTime.add(Calendar.HOUR, 24 * 7);        Date experiesDate = nowTime.getTime();         Map<String, Object> map = new HashMap<String, Object>();        map.put("alg", "HS256");        map.put("typ", "JWT");        String token = JWT.create()                .withHeader(map)                .withClaim("id", id)                .withClaim("username", username)                .withClaim("type", type)                .withExpiresAt(experiesDate) // 设置过期的日期                .withIssuedAt(iatDate) // 签发时间                .sign(Algorithm.HMAC256(SECRET)); // 加密        return token;    }          public static Map<String, Claim> verifyToken(String token) throws Exception {        JWTVerifier verifier = JWT.require(Algorithm.HMAC256(SECRET)).build();        DecodedJWT jwt = null;        try {            jwt = verifier.verify(token);  //核实token        } catch (Exception e) {            throw new Exception("登录过期");        }        return jwt.getClaims();  //返回的是解析完的token,是一个map,里面有id,username,type键值对    }}

2、JedisUtil缓存token

首先讲讲Jedis,Jedis是集成了redis的一些命令操作,将其封装的java客户端,一般在其上封装一层作为业务使用,封装如下:

首先导入maven包,这里也需要启动redis服务

<dependency>            <groupId>redis.clients</groupId>            <artifactId>jedis</artifactId>            <version>2.9.0</version>        </dependency>

然后设计一个Jedis工具类将其封装

import redis.clients.jedis.Jedis; public class JedisUtils {     private static Jedis jedis;    //初始化    private static void init() {        jedis = new Jedis("localhost");    }    //在redis中设置键值对存储    public static void setToken(String id, String token, int day) {        int second = day * 60 * 60 * 24;        JedisUtils.init();        jedis.set(String.valueOf(id), token); //根据id存储token        jedis.expire(String.valueOf(id), second);  //设置token持续时间    }     public static String getToken(String id) {        JedisUtils.init();        String token = jedis.get(String.valueOf(id));  //获取token        return token;    }}

以上是“ssm项目如何实现用户登陆持久化”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯