电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Spring session實現(xiàn)共享單點登錄案例過程解析

瀏覽:3日期:2023-08-30 15:29:11

一、項目構(gòu)建

1、案例說明

本文主要演示單點登錄功能,會貼出主要配置和代碼以及必要解釋,全部代碼請參考git地址。session共享一個基本原則是將session存儲在某個地方,所有的應(yīng)用都可以訪問,這里使用redis存儲session。當(dāng)應(yīng)用需要認(rèn)證時,先從redis讀取用戶信息。

2、基本配置

1)pom.xml

<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId></dependency><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId></dependency><dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session</artifactId> <version>1.3.1.RELEASE</version></dependency>

2)application.properties

server.port=8080spring.session.store-type = redisspring.redis.host=192.168.7.151spring.redis.port=6379

本案例的兩個應(yīng)用完全一樣,一個端口是8080,一個端口是80

3、代碼變動

1)新增SimpleImageCode.java

public class SimpleImageCode implements Serializable{ private static final long serialVersionUID = 1L; private String code; private LocalDateTime expireTime; public SimpleImageCode(String code,LocalDateTime expireTime) { this.code = code; this.expireTime = expireTime; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public LocalDateTime getExpireTime() { return expireTime; } public void setExpireTime(LocalDateTime expireTime) { this.expireTime = expireTime; } public boolean isExpried() { return LocalDateTime.now().isAfter(expireTime); }}

該類與ImageCode.java基本一樣,區(qū)別1:實現(xiàn)了Serializable接口;區(qū)別2:沒有BufferedImage屬性。原因是圖形驗證碼要放入session中,而session需要存放到redis中,所以必須實現(xiàn)序列化接口。一個類實現(xiàn)序列化接口,它里面的類屬性也要實現(xiàn)序列化接口,但是BufferedImage是jdk的類,無法實現(xiàn)序列化接口,這樣就不把它放入到redis中,在校驗時,我么只會校驗驗證碼和過期時間,所以不會影響。

2)修改ValidateCodeController.java

@GetMapping('/code/image')public void createCode(HttpServletRequest request,HttpServletResponse response) throws Exception { ImageCode imageCode = createImageCode(request); SimpleImageCode simpleImageCode = new SimpleImageCode(imageCode.getCode(),imageCode.getExpireTime()); //request.getSession().setAttribute('imageCodeSession', imageCode); request.getSession().setAttribute('imageCodeSession', simpleImageCode);//序列化到redis中 ImageIO.write(imageCode.getImage(), 'JPEG', response.getOutputStream()); }

將SimpleImageCode放入到session中

3)修改ValidateCodeFilter.java

private void validate(HttpServletRequest request){//ImageCode codeInSession = (ImageCode)request.getSession().getAttribute('imageCodeSession'); SimpleImageCode codeInSession = (SimpleImageCode)request.getSession().getAttribute('imageCodeSession'); String codeInRequest = request.getParameter('imageCode'); ... ...//校驗邏輯 request.getSession().removeAttribute('imageCodeSession'); }

校驗驗證碼前從session中取出SimpleImageCode

  二、測試驗證

1)啟動redis、80端口應(yīng)用、8080端口應(yīng)用,查看redis信息為空,如下:

Spring session實現(xiàn)共享單點登錄案例過程解析

2)瀏覽器輸入:localhost:8080/index.html,跳轉(zhuǎn)登錄頁面,查看redis,如下:

Spring session實現(xiàn)共享單點登錄案例過程解析

3)登錄后,查看redis,如下:

Spring session實現(xiàn)共享單點登錄案例過程解析

4)同一個瀏覽器輸入:localhost/index.html,直接跳到index頁面,查看redis,如下:

Spring session實現(xiàn)共享單點登錄案例過程解析

5)點擊index.html中的退出連接,查看redis,如下:

Spring session實現(xiàn)共享單點登錄案例過程解析

6)再次訪問localhost:8080/index.html,跳轉(zhuǎn)登錄頁面,查看redis,如下:

Spring session實現(xiàn)共享單點登錄案例過程解析

7)再次登錄8080的應(yīng)用,查看redis,如下:

Spring session實現(xiàn)共享單點登錄案例過程解析

通過測試發(fā)現(xiàn)實現(xiàn)了單點登錄。貼出截圖只是說明session存在了redis中,并且會隨著操作變化。實際無需關(guān)心redis。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 | 离子色谱自动进样器-青岛艾力析实验科技有限公司 | 节流截止放空阀-不锈钢阀门-气动|电动截止阀-鸿华阀门有限公司 | 冷镦机-多工位冷镦机-高速冷镦机厂家-温州金诺机械设备制造有限公司 | 企业微信scrm管理系统_客户关系管理平台_私域流量运营工具_CRM、ERP、OA软件-腾辉网络 | 模具ERP_模具管理系统_模具mes_模具进度管理_东莞市精纬软件有限公司 | 电解抛光加工_不锈钢电解抛光_常州安谱金属制品有限公司 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 中央空调维修、中央空调保养、螺杆压缩机维修-苏州东菱空调 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 安徽华耐泵阀有限公司-官方网站| 食品机械专用传感器-落料放大器-低价接近开关-菲德自控技术(天津)有限公司 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 酒糟烘干机-豆渣烘干机-薯渣烘干机-糟渣烘干设备厂家-焦作市真节能环保设备科技有限公司 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 深圳市源和塑胶电子有限公司-首页 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 北京亦庄厂房出租_经开区产业园招商信息平台 | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 河南凯邦机械制造有限公司| 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | C形臂_动态平板DR_动态平板胃肠机生产厂家制造商-普爱医疗 | 棉柔巾代加工_洗脸巾oem_一次性毛巾_浴巾生产厂家-杭州禾壹卫品科技有限公司 | 超声波清洗机_大型超声波清洗机_工业超声波清洗设备-洁盟清洗设备 | 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 面粉仓_储酒罐_不锈钢储酒罐厂家-泰安鑫佳机械制造有限公司 | 电磁辐射仪-电磁辐射检测仪-pm2.5检测仪-多功能射线检测仪-上海何亦仪器仪表有限公司 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | 软启动器-上海能曼电气有限公司| 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 大米加工设备|大米加工机械|碾米成套设备|大米加工成套设备-河南成立粮油机械有限公司 | 深圳公司注册-工商注册代理-注册公司流程和费用_护航财税 | 吊篮式|移动式冷热冲击试验箱-二槽冷热冲击试验箱-广东科宝 | 河南15年专业网站建设制作设计,做网站就找郑州启凡网络公司 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 |