当前位置: 首页 > wzjs >正文

企业网站托管的方案网站建设的好处

企业网站托管的方案,网站建设的好处,宜兴做网站的公司,网页微博登录入口由于不同的tomcat服务器之间的session是不共享的,当请求如果在不同tomcat服务器之间切换就会导致数据丢失的问题。 使用redis可以解决session数据共享的问题 redis是tomcat以外的存储,存在redis中的数据,任何一台tomcat都能看得见&#xff0…

由于不同的tomcat服务器之间的session是不共享的,当请求如果在不同tomcat服务器之间切换就会导致数据丢失的问题。
在这里插入图片描述

使用redis可以解决session数据共享的问题
redis是tomcat以外的存储,存在redis中的数据,任何一台tomcat都能看得见,且redis是基于内存存储,又是k、v结构的存储方式。

redis保存登录用户信息时value的选择

在保存登录的用户信息时,

  1. 可以使用String结构,以json字符串来保存(比较直观、但是占用空间大):
    在这里插入图片描述
  2. 可以使用hash结构将对象中每个字段独立存储(对单个字段做CRUD、占用空间小):
    在这里插入图片描述

简单的数据类型(验证码),可以用string作为value存储
复杂的数据类型(对象),可以用hash作为value存储

UserDTO userDTO = BeanUtil.copyProperties(user, UserDTO.class); // 将User对象转成Hash存储
String tokenKey = RedisConstants.LOGIN_USER_KEY + token;
Map<String, Object> userMap = BeanUtil.beanToMap(userDTO, new HashMap<>(),CopyOptions.create().setIgnoreNullValue(true) // 忽略空值.setFieldValueEditor((filedName, filedValue)-> String.valueOf(filedValue))); // 自己设置字段名和字段值
stringRedisTemplate.opsForHash().putAll(tokenKey, userMap);
stringRedisTemplate.expire(tokenKey, RedisConstants.LOGIN_USER_TTL, TimeUnit.MINUTES); // 设置30分钟有效期

redis保存用户信息时设置有效期问题

在redis中保存用户信息时,一定要给当前用户设置一个30分钟有效期,这样也可以避免数据在redis中占用过多的内存。但是注意:并不是用户登录后过了30分钟就直接得让他重新登录。应该是:用户登录后,如果还有访问系统,应该重新更新一遍有效期为30分钟。这就需要在登录拦截器中进行不断更新有效期

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 1. 获取请求头中的tokenString token = request.getHeader("Authorization");if(StrUtil.isBlank(token)){response.setStatus(401);return false;}// 2. 获取Redis中的用户String tokenKey = RedisConstants.LOGIN_USER_KEY + token;Map<Object, Object> userMap = stringRedisTemplate.opsForHash().entries(tokenKey);// 3. 判断用户是否存在if(userMap.isEmpty()){response.setStatus(401);return false;}UserDTO userDTO = BeanUtil.fillBeanWithMap(userMap, new UserDTO(), false);// 4. 保存用户信息到ThreadLocalUserHolder.saveUser(BeanUtil.copyProperties(userDTO, UserDTO.class));// 5. 刷新token有效期stringRedisTemplate.expire(tokenKey, RedisConstants.CACHE_SHOP_TTL, TimeUnit.SECONDS);return true;}

在实际开发的时候,我们可以设置两个拦截器:

  • 一个拦截器拦截所有请求,刷新token的有效期;
  • 一个拦截器拦截部分请求,判断ThreadLocal中是否存在用户
    在这里插入图片描述
http://www.dtcms.com/wzjs/565950.html

相关文章:

  • 服装企业营销网站建设深圳有没有可以做家教的网站
  • 做防水的网站有哪些网站开发的广告
  • 做名片的网站叫什么来着东莞网站推广渠道
  • 个人网站怎么制作沈阳小装修公司哪家好
  • 做网站麻烦不网站可以换域名吗
  • 免费做 爱视频网站备案网站名称重复
  • 内蒙古住房和城乡建设网站网站建设人员
  • 电商平台门户网站建设的重要性石家庄关键词优化平台
  • 来返苏州人员信息登记平台厦门网站快速排名优化
  • 莱州网站建设报价企业网站备案名称
  • 乌海网站开发学广告设计学费是多少
  • 德州网站建设优化怎么免费建立自己的网站平台
  • 云南省做网站开发的公司排名网站平台由什么搭建
  • 佛山网站建设首页排名网站设计图
  • 网站服务器租用有什么好品牌设计公司50强
  • 宿州微网站建设网站中flash怎么做
  • 中国建设信用卡网站首页十个源码网站
  • 建网站的价格微博推广会被别人看出来吗
  • 诸暨企业网站建设黑马程序员培训机构官网
  • 铁岭网站制作手机网站和app的区别
  • 自己主机做标签电影网站wordpress 4.4.2漏洞
  • 国外网站建设视频教学教务管理系统设计
  • 招聘网站排名搜索引擎论文3000字
  • 中小学网站建设论文手机网站建站APP
  • 西安网站制作设计定制手机版的学习网站
  • 网站被做跳转修改wordpress 的权限
  • 山东专业的网站建设大学院系网站建设
  • python网站开发用什么软件优化网站建设人员组成
  • 企业网站怎么做毕业设计开网站买自己做的东西
  • 手机网站建设开发报价前端做网站使用的软件工具