cookie+拦截器实现不同角色对应不同的登录页
2023-03-31 10:59:29 时间
问题描述
问题描述:由于业务需求,系统中有 A角色需要看A登录页、B角色需要看B登录页面。注意是同一个系统哦。现在问题来了,有同学可能会回答了,这样就太简单了,A角色直接访问A登录页,B角色直接访问B登录页就完事了,那么的地址肯定不是一样的,但是退出的时候怎么办,页面怎么跳转呢?我们下面分析问题!
问题分析
页面退出分为两种情况!
1.用户直接点击退出按钮,主动退出。
2.session失效,被动退出。
问题解决方案
1.主动退出。
我认为有两种方案。
A:角色在系统启动时绑定对应登录地址,当用户登录系统后,我们可以获取用户角色,退出时,通过角色可以获取到对应的登录地址。
B:另外一种情况,我们假设A角色就是通过A登录页进入的,B角色就是通过B登录页进入的,这样我们在用户登录成功后,可以在session里面直接保存对应的登录页地址。退出时,通过获取session的地址就可以退到指定的页面。我个人推荐这种方案。
2.被动退出。
session失效,此时是获取不到用户信息的,如果获取不到用户信息,想自动定位到指定页面就比较麻烦,现场B角色用户说我一会儿没操作,怎么会跳到A登录页,会接到投诉电话。后来我们用了cookie技术,每次用户登录成功后,将cookie保存到用户浏览器,用户浏览器写入角色信息,这样当用户重新刷新页面时,用过拦截器技术,就可以自动定位页面。(不要总想着用户会输入你给的网址,他们不会记,也记不住),我们来看看具体实现代码。
cookie写入部分代码
/** * 登录成功,保存session的同时,也保存cookie * add by jiaolian * @param response * @param userInfoEntity */ private void addUserAccCookie(HttpServletResponse response,TBaseDataUserInfoEntity userInfoEntity){ Cookie cookie = new Cookie(UserInfoConstants.PRE_USER_ACC, String.valueOf(userInfoEntity.getOrgId())); // Cookie描述 cookie.setComment("shiro acc"); //秒为单位(3个小时) cookie.setMaxAge(3*60*60); cookie.setPath("/"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); response.addCookie(cookie); }
这段代码需要在拦截器里面判断。给大家参考下。
总结
好了,今天我们就介绍到这里吧,有不明白的可以下面浏览哦。喜欢的请点赞加关注哦。我是叫练【公众号】,边叫边练。
相关文章
- 深入探讨Java中的异常与错误处理
- 研究学习Kotlin的一些方法
- 数据显示Java热度持续下落,日子屈指可数?
- 2017年5月编程语言排行榜:Java与C语言优势正开始缩小
- Java多线程之内置锁与显示锁
- Java线程池的理论与实践
- 白话阿里巴巴Java开发手册(编程规约)
- 关于Java你不知道的十件事
- Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令
- Java实现高斯模糊和图像的空间卷积
- Java阻塞队列实现原理分析
- NPM使用技巧
- Node.js对Java开发者而言是什么?
- Java反射机制应用实践
- 理解RxJava中的Single和Completable
- 2017年你不能错过的Java类库
- 大规模集群下的Hadoop NameNode
- 从源码解密Spark内存管理
- 2017年3月编程语言排行榜:Swift首次进入前十
- JVM热点技术:Java类的加载机制