SpringBoot整合redis把用户登录信息存入redis
首先引入redis的jai包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
在userserviceimpl引用springboot自带的StringRedisTemplate
@Autowired
private StringRedisTemplate stringRedisTemplate;
如果user != null ,把user实体类转换成json格式,redis是key/value格式,保证数据唯一性,所以key用uuid做key,user做value,确保唯一性
//把user实体类转化成json格式
String userJoin = JSON.toJSONString(user);
if (user != null) {
//获取uuid
String uuid = UUIDUtils.getUUID();
//创建cookie
Cookie cookie = new Cookie("userCookie", uuid);
response.addCookie(cookie);
//把用户信息存入redis set(key,value,过期时长,过期格式) 设置三天过期
stringRedisTemplate.opsForValue().set("user" + "/" + uuid, userJoin, 3, TimeUnit.DAYS); return Msg.ok("");
} else { return Msg.failure("用户名或密码错误"); }
然后在usercontroller获取的时候
@RequestMapping(value = "/toMainPage")
public ModelAndView toMainPage(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mv;
String struuid = null;
//获取cookie里面的uuid
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if (cookie.getName().equalsIgnoreCase("userCookie")) {
struuid = cookie.getValue();
}
} if (struuid == null) {
System.out.println("验证不通过"); System.out.println("UUID不存在"); } String userJson;
try {
//根据struuid,在redis中获取user信息 userJson = stringRedisTemplate.opsForValue().get("user" + "/" + struuid);
JSONObject pa = JSONObject.parseObject(userJson);
if ("管理员".equals(pa.getString("uRank")) && userJson != null) {
mv = new ModelAndView("index");
mv.addObject("user", pa.getString("uName"));
mv.addObject("id", pa.getString("id"));
mv.addObject("uPwd", pa.getString("uPwd")); } else if ("普通用户".equals(pa.getString("uRank")) && userJson != null) {
mv = new ModelAndView("pt_index");
mv.addObject("user", pa.getString("uName"));
mv.addObject("id", pa.getString("id"));
mv.addObject("uPwd", pa.getString("uPwd")); } else {
mv = new ModelAndView("redirect:login");
} } catch (Exception e) {
// TODO Auto-generated catch block
mv = new ModelAndView("redirect:login");
}
return mv;
}
SpringBoot整合redis把用户登录信息存入redis的更多相关文章
- Linux用户登录信息
1.用户登录日志信息 /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间: /var/log/wtmp:记录当前正在登录和 ...
- .NET跨平台之旅:ASP.NET Core从传统ASP.NET的Cookie中读取用户登录信息
在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军——将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到 ...
- Oracle 中记录用户登录信息
我们可以使用 Oracle Audit 函数来记录用户登录信息,但是如果开放了 Audit 函数将会使 Oracle 性能下降,甚至导致 Oracle 崩溃.那我们如何才能记录用户登录信息呢?其实我们 ...
- php使用session来保存用户登录信息
php使用session来保存用户登录信息 使用session保存页面登录信息 1.数据库连接配置页面:connectvars.php <?php //数据库的位置 define('DB_HOS ...
- linux基础之用户登录信息查看命令
用户登录信息查看命令 1.who命令 同一个账号通过不同终端登录也属于不同的登录信息,这里不同的终端包含虚拟终端和模拟终端,因为一个用户通过一个终端登录属于一个session 基本介绍 打印当前系统上 ...
- Asp.Net MVC记住用户登录信息 下次登录无需输入密码
有的时候做网站,就需要记住用户登录信息,下次再登录网站时,不用重复输入用户名和密码,原理是浏览器的cookie把状态给记住了! 那么具体是怎么实现的呢?下面博主将一部分代码贴出来,想要完整版的Demo ...
- net mvc中实现记录用户登录信息(记住登录效果)
现记录用户登录信息(记住登录效果) 本文讲述了使用cookies实现网站记住登录效果,效果如下: 主要实现方法,当用户选择记住登录时建立cookies保存用户名和用户密码,当用户登录不选择记住登录时, ...
- 【SVN/Visual Studio】清除/更换AnkhSVN的用户登录信息
问题: 在VS开发环境下,使用SVN做版本控制,用了TortoiseSVN和插件AnkhSVN.提交代码到SVN服务器时,发现用的是别人的SVN帐号,不是自己的号(比如该电脑之前是别人在使用).想要清 ...
- 设置获取用户登录信息的Seeion类
/** * * 保存用户上下文信息 * 还可以获取session * */ public class UserContext { public static final String USER_IN_ ...
随机推荐
- 7、Shiro加密和加盐
这里我们以md5加密方法举例,首先我们写一个main方法测试我们的密码经过md5加密之后的得到什么样的字符串: /** * 书写方法测试Md5Hash将密码“houru”加密之后的密文 * 但是仅仅加 ...
- Django学习之缓存
1.配置 2.应用 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存.缓存将一个某个views的返回值保存至内存或者m ...
- 搜索引擎、邮件营销、微信营销之营销方式大PK
经常有朋友问到这个问题,关于搜索引擎.邮件营销.微信营销三种网络营销方式的优劣势,用哪种营销方式比较好.下面我们跟随Focussend小编来看看这几种方式的优劣势. 搜索引擎 优势:1.传播速度快:2 ...
- EDM营销技巧之如何进行用户唤醒
一般来说,EDM营销中肯定有些用户就长期不关注我们的邮件.这个时候我们应该如何唤醒用户呢?本文给大家分享一下技巧. 首先,我们要注重电子邮件地址的价值.只有好的新的邮件地址库,才能引起用户足够的关注. ...
- 使用js如何获取treeview控件的当前选中的节点
var selectedNodeID = theForm.elements["<%=treeView1.ClientID%>_SelectedNode"].value; ...
- python学习笔记:(一)基础语法
一.编码 默认情况下,python3采用的是utf-8,所有字符串都是unicode字符串.如果有其他需要的时候,可以修改为其他的. 如:# _*_ coding:gb2312 _*_ 二.标识符 标 ...
- Mybatis使用时 resultMap与resultType、parameterMap与 parameterType的区别
Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与 parameterType的区别在面试的时候被问到的几率非常高,出现的次数到了令人 ...
- 【MM系列】SAP 关于更改物料的价格控制类型
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 关于更改物料的价格控制类型 ...
- Grass Planting
大致题意: 维护一棵树,支持两种操作: P x y x到y路径上的每条边的值+1:Q x y 询问x到y路径上所有边的值的和.Input第一行两个正整数,N,M表示点数和操作数:接下来N-1行每行两个 ...
- kafka学习(七)
跨集群数据镜像 跨集群镜像的使用场景 1.区域集群和中心集群 2.冗余,发生紧急情况下使用第二个集群,保存相同的数据. 3.云迁移 多集群架构 跨集群中心通信的一些现实情况 1.高延迟 2.有 ...