判断session失效,并跳转到登录页面
为什么80%的码农都做不了架构师?>>>
一,首先在登录页面加入以下代码,作用是使用ifrme等加载页面时,跳转登录页面会嵌套在框架内,让登录页面全屏
<script language="JavaScript">if (window != top){top.location.href = location.href;} </script>
二,在web.xml中配置过滤器,过滤所有的action判断session是否过期
<!-- session过滤器配置相关 --> <filter><filter-name>SessionFilter</filter-name><filter-class>com.wonders.filter.SessionFilter</filter-class> </filter> <filter-mapping><filter-name>SessionFilter</filter-name><url-pattern>*.action</url-pattern><!--<dispatcher>FORWARD</dispatcher>--><!--在这种情况下,如果请求是以/contract/…或者/user/…开头的,并且是通过request dispatcher的forward方法传递过来或者直接从客户端传递过来的,则必须经过这个过滤器。--><!--<dispatcher>REQUEST</dispatcher>--> </filter-mapping>
三,相关的过滤类
该类中主要判断action是否是生成验证码和跳转到登录页面的类,如果是以上两个类则不过滤,否则无法显示登录页面和验证码,除此以外的都可以过滤
import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.wonders.admin.model.User; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject;public class SessionFilter implements Filter {@Overridepublic void destroy() {// 过滤器销毁,一般是释放资源}/*** 某些url需要登陆才能访问(session验证过滤器)*/@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) arg0;HttpServletResponse response = (HttpServletResponse) arg1; // HttpSession session = request.getSession();//判断session是否过期HttpServletRequest sr = (HttpServletRequest) request;String strURL = sr.getRequestURL().toString();//此处是判断url如果是登录页面和生成验证码的action则不执行过滤if (strURL.indexOf("/code.action") == -1 && strURL.indexOf("/login.action")== -1) {//获得session判断是否存在Subject currentUser = SecurityUtils.getSubject();Session session = currentUser.getSession();User user =(User)session.getAttribute("user");if (user == null) {String errors = "您还没有登录,或者session已过期。请先登陆!";request.setAttribute("Message", errors);//跳转至登录页面request.getRequestDispatcher("/login.jsp").forward(request, response);} else {arg2.doFilter(request, response);}}else{arg2.doFilter(request, response);}}@Overridepublic void init(FilterConfig arg0) throws ServletException {// 初始化操作,读取web.xml中过滤器配置的初始化参数,满足你提的要求不用此方法} }
通过以上过滤就可判断session过期时自动跳转到登录页面,而不是点击操作时没反应。
转载于:https://my.oschina.net/mayude/blog/1796535
判断session失效,并跳转到登录页面相关推荐
- html session 登录页面跳转页面跳转页面,session失效后跳转到登陆页面
一.编写Filter拦截器类 package com.pv.utils; import java.io.IOException; import java.io.PrintWriter; import ...
- java session失效之后跳转_详解springmvc控制登录用户session失效后跳转登录页面
springmvc控制登录用户session失效后跳转登录页面,废话不多少了,具体如下: 第一步,配置 web.xml 15 第二步,配置spring-mvc.xml 第三步,写拦截器SystemSe ...
- Shiro中Session过期页面跳转回登录页面处理问题
Session超时的两种情况: shiro在管理session后,在session超时会进行跳转,这里有两种情况需要考虑,一种是ajax方式的请求超时,一种页面跳转请求的超时: 解决问题的思路:通过定 ...
- Shiro session过期跳转到登录页面问题
Shiro session过期跳转到登录页面问题 shrio的session过期后(工程重启或者用户长时间没进行任何操作),当客户端再次向服务端发起请求时,shrio会判断用户没有登录授权,然后对请求 ...
- 创建MyFilter1类过滤器,对于未登陆用户(如果session对象中包含用户名就认为已登录)进行过滤跳转到登录页面
XML的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...
- php拦截登录页面跳转页面,PHP未登录自动跳转到登录页面
PHP未登录自动跳转到登录页面 下面一段代码给大家分享php未登录自动跳转到登录页面,具体代码如下所示: namespace Home\Controller; use Think\Controller ...
- dede login.php,DedeCms会员登录成功,又跳转到登录页面
我使用的是dedecms5.7的sp1版本,整合了Discuz+UChome,三个都通信成功.然后后面我测试同步登录和退出的时候,发现dede的会员登录成功,但是又马上跳转到登录页面,就是说不能进入会 ...
- php未登录跳到登陆页面,vue实现未登录跳转到登录页面的方法
环境:vue 2.9.3; webpack;vue-router 目的:实现未登录跳转 例子:直接在url地址栏输入...../home,但是这个页面要求需要登陆之后才能进入,判断的值就通过登陆之后给 ...
- java web实现页面跳转页面_JavaWeb过滤器实现页面跳转至登录页面
需求说明: 1.用户登录某页面一段时间之内,如果无任何操作,跳转至登录页面. 2.用户在非登录状态下,无法访问项目下的某些页面. 解决方式: 通过session过滤器实现对请求的过滤,如果未登录跳转至 ...
最新文章
- x86 cpu卷积网络的自动调谐
- WebForm页面生命周期及asp.net运行机制
- 触发器与存储过程笔记
- Linux 内存管理之vmalloc
- 【Oracle】配置客户端监听
- 我们常说的算法时间复杂度和空间复杂度到底是什么?
- 关于gcc的一点小人性化提示
- flex布局 占满_果冻公开课第九课:打破传统布局方式的flex(上)
- python读取地震信号【sgy,segy】
- 【VMware】Assuming drive cache: write through
- python后台研发工程师面试题_今日头条面试题之后台Python研发
- pygame学习笔记——检测鼠标碰到、点击图片
- selenium之判断是否定位正确
- wordpress 数据库_在WordPress中使用数据库
- NGS项目四:高通量测序在植物生物胁迫研究中的应用
- 企业拥有PMO(项目管理办公室)的好处
- 敏捷开发:5种主流开发方法介绍
- 【STM32F407开发板用户手册】第19章 STM32F407的GPIO应用之按键FIFO
- 无线通信基础知识1:电磁波产生的原因
- 数字孪生论文阅读笔记【1.1】
热门文章
- python仿真智能驾驶_基于Python的3R机器人运动仿真
- upload-labs_pass21_CTF逻辑老饶了
- Java知识系统回顾整理01基础04操作符05赋值操作符
- 移植 uC/OS-III 到 STM32
- 统计字符串中某个字符的个数
- Node_初步了解(4)小爬虫
- Visual Studio 2017 调试 windows server 2016 Docker Container
- SVN本地代码未提交而被覆盖
- jQuery Mobile 手动显示ajax加载器,提示加载中...
- C# 多线程修改控件时遇到:创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke