浪海博客 如何实现七天免登录功能?

本文详细描述了如何在Gitee和GitHub项目中实现用户登录功能,通过MD5加密和UUID结合存储在Redis和Cookie中,以及使用自定义拦截器来验证七天内的免密码登录过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gitee地址:https://gitee.com/langhai666/langhai-blog

github地址:https://github.com/Allenkuzma/langhaiblogs

本篇文章的完整代码请阅读上面 浪海博客 的源码。

cc.langhai.controller.user.LoginController#loginEnter (用户登录功能实现)

cc.langhai.interceptor.LoginInterceptor(自定义拦截器)

实现思路

第一步:在实现登录功能的时候,生成一份和用户秘钥,在redis和cookie当中都进行存储。

第二步:在访问需要登录的功能时候,从cookie当中获取用户秘钥和redis中的秘钥进行对比。从而实现七天内免密码登录。

具体实现

第一段代码在登录的时候,分别在redis和cookie存储用户想关联的秘钥信息。

// 使用hutool工具进行md5秘钥生成,后面在拼接上UUID。
String md5 = DigestUtil.md5Hex(username + systemConfig.getSecret());
UUID uuid = UUID.randomUUID();
String cipher = uuid + md5;
// 将秘钥信息存储在cookie当中。
Cookie cookie = new Cookie("userLoginCipher" + username, cipher);
cookie.setPath("/");
cookie.setMaxAge(7 * 24 * 60 * 60);
response.addCookie(cookie);
// 将秘钥信息存储到redis当中。
redisTemplate.opsForValue().set("userLoginCipher" + username, cipher, 7 * 24 * 60, TimeUnit.MINUTES);

第二段代码在拦截器中拦截,获取cookie当中的秘钥信息,再从redis当中获取秘钥信息进行对比。如果核实成功,从而进行登录。

// 遍历cookie从而拿到当中的秘钥信息。
Cookie[] cookies = request.getCookies();
// ... ... 
// 从redis中获取秘钥信息。
String redis = redisTemplate.opsForValue().get(cookie.getName());
// ... ...
// 如果核实成功,则进行登录。
session.setAttribute("user", user);
session.setMaxInactiveInterval(60 * 60);

上面已经提供大部分代码,具体实现细节可以参考 浪海博客 源码,或者根据逻辑自行实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值