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

免费建设在线商城的网站站点搭建

免费建设在线商城的网站,站点搭建,网站内容页优化,宠物网站 模板1、SpringSession简介 SpringSession是基于Spring框架的Session管理解决方案。它基于标准的Servlet容器API#xff0c;提供了Session的分布式管理解决方案#xff0c;支持把Session存储在多种场景下#xff0c;比如内存、MongoDB、Redis等#xff0c;并且能够快速集成到Spr…1、SpringSession简介 SpringSession是基于Spring框架的Session管理解决方案。它基于标准的Servlet容器API提供了Session的分布式管理解决方案支持把Session存储在多种场景下比如内存、MongoDB、Redis等并且能够快速集成到Spring应用程序中。使用SpringSession实现Session管理可以有效解决Session共享的问题提升系统的可伸缩性和可靠性。同时SpringSession还提供了一些扩展如Spring Session Data Redis、Spring Session JDBC等可用于与不同的数据源进行集成。 这边博客主要记录了如何在SpringBoot项目中整合SpringSession并基于Redis实现对Session的管理和事件监听具体过程如下 2、整合SpringSession的步骤 2.1、引用SpringSession相关依赖 这里引入了spring-session和Redis的相关依赖项目其他依赖根据自己的项目按需引入即可。其中spring-session依赖有很多版本根据Session存储场景区分这里我们引入spring-session-data-redis即可。 dependencygroupIdorg.springframework.session/groupIdartifactIdspring-session-data-redis/artifactId /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency2.2、通过Java Config进行配置 这里通过Java实现SpringSession的配置。 EnableRedisHttpSession注解开启SpringSession的配置默认加载SpringSession需要的配置内容。其中maxInactiveIntervalInSeconds用来设置Session的过期时间默认是1800s30分钟这里为了方便测试改成了2分钟。引入LettuceConnectionFactory 工厂类用于配置和管理与Redis服务器连接的它是Spring Data Redis的一部分。HttpSessionIdResolver 类主要实现SessionId的解析SpringSession默认的使用的是CookieHttpSessionIdResolver即基于Cookie解析SessionId因为项目使用了前后端分离所以这里改成了http请求头的解析方式同时修改了请求头的key为“X-Token”默认值为“X-Auth-Token”。 Configuration EnableRedisHttpSession(maxInactiveIntervalInSeconds60 * 2) public class QriverSpringSessionConfig {Beanpublic LettuceConnectionFactory connectionFactory(){return new LettuceConnectionFactory();}Beanpublic HttpSessionIdResolver sessionIdResolver() {return new HeaderHttpSessionIdResolver(X-Token);}}如果之前项目中没有引入Redis这里还需要增加Redis的相关链接信息如下所示 spring:redis:host: 127.0.0.1port: 6379ssl: falsedatabase: 0password: 1234562.3、前端获取token并作为鉴权标识 前端在登录系统成功时可以通过返回的response 的Headers中解析到Token值一般会在前端封装的http请求中进行全局处理如下下图所示:   同时也可以直接由后端作为响应结果进行返回如果使用这种方式需要后端配合进行token的返回因为项目里使用了SpringSecurity框架所以我这里直接在重写的AuthenticationSuccessHandler的onAuthenticationSuccess()方法中实现了代码如下 Overridepublic void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {boolean isAjax this.isAjaxRequest(request);if(isAjax){//ajax请求返回json数据MapString, Object map new HashMap();map.put(code, 0);map.put(msg, 用户登录成功);map.put(success, true);//map.put(user,authentication);String token request.getSession().getId();map.put(token,token);String json JSON.toJSONString(map);response.setContentType(text/json;charsetutf-8);response.getWriter().write(json);}else{//按照原来的处理过程继续处理response.sendRedirect(./index/toIndex);}}因为后端使用了HeaderHttpSessionIdResolver作为解析tokenSessionId的方法所以前端访问后端资源接口时需要把Token放到请求头中后台解析Token并校验鉴权。   至此当我们在请求需要鉴权后才能访问的资源时就会在Header上携带Token同时每次响应头中也会带有该Token值。也就算了完成了SpringSession的整合工作了。因为我们使用了SpringBoot来整合SpringSession很多工作都被SpringBoot自动配置完成了所以整个过程就会非常简单和方便了。而在Redis中Session数据的存储方式如下所示这里不再展开后续学习过程中再逐步记录。 3、Session生命周期事件监听 上述过程完成了SpringSession的整合如果我们想监听Session的创建和销毁事件我们可以通过监听SessionCreatedEvent和SessionDeletedEvent完成具体实现如下 3.1、通过EventListener注解实现 Component public class QriverSessionEventListener {EventListenerpublic void handleSessionCreatedEvent(SessionCreatedEvent event) {// 可以执行创建事件的操作System.out.println(QriverSessionEventListener handleSessionCreatedEvent,Time: Calendar.getInstance().getTime());}EventListenerpublic void handleSessionDeletedEvent(SessionDeletedEvent event) {// 可以执行销毁事件的操作System.out.println(QriverSessionEventListener handleSessionDeletedEvent,Time: Calendar.getInstance().getTime());} }3.2、通过实现HttpSessionListener接口实现 Component public class QriverSessionListener implements HttpSessionListener {Overridepublic void sessionCreated(HttpSessionEvent event) {// 当新的Session创建时增加在线用户计数// 你可以在这里添加你的逻辑代码System.out.println(QriverSessionListener sessionCreated,Time: Calendar.getInstance().getTime());}Overridepublic void sessionDestroyed(HttpSessionEvent event) {// 当Session销毁时减少在线用户计数// 你可以在这里添加你的逻辑代码System.out.println(QriverSessionListener sessionCreated,sessionDestroyed: Calendar.getInstance().getTime());}}
http://wiki.neutronadmin.com/news/198435/

相关文章:

  • 网站建设不完整 审核惠州专门做网站
  • 徐州住房与建设局网站微信做网站的公司
  • 拓者设计吧官方网站网站常用字体大小
  • 团购网站 seo弄个网站多少钱
  • 知识产权教育平台网站开发总结怎么能让我的网站被百度收录
  • 上饶市网站建设公司国外有哪些做建筑材料的网站
  • 用路由器做网站网站建设成功案例书籍
  • asp企业网站cms界面设计属于什么专业
  • 电子商务专业网站设计开个免费一代发网店
  • c#如何做公司网站wordpress 准迁
  • vs网站开发入门网站优化公司排名
  • 综合服务门户网站建设下载学校网站模板下载地址
  • 上海的企业网站备案车票制作图片的软件
  • 网站文件上传好下一步怎么做征婚网站上拉业务做恒指期货
  • 万网网站建设 优帮云新产品代理项目推荐
  • 坪山医院网站建设龙岗网站建设推广报价
  • 二级域名网站建设second是什么意思
  • 成都网站优化方案商丘互联网公司
  • iis7发布php网站wordpress 文档下载
  • 旅行网站排名g4560做网站服务器
  • 北京高端网站公司哪家好微信平台开发公司成都
  • ftp上传文件到网站省品牌建设联合会网站
  • 建设网站的基本知识网站平台建设视频教学
  • 高端网站建设wanghess新民网站建设价格咨询
  • 网站开发的数据库设计实体是什么商业软文怎么写
  • 沙坪坝集团网站建设2023中关村手机排行榜
  • 门户网站定制wordpress文件上传系统
  • 西安东郊网站建设德阳网站建设推广
  • 开题报告旅游网站建设做鞋子出口需要作网站吗
  • 泸州市往建局建设银行网站名称印发网站建设方案