为什么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失效,并跳转到登录页面相关推荐

  1. html session 登录页面跳转页面跳转页面,session失效后跳转到登陆页面

    一.编写Filter拦截器类 package com.pv.utils; import java.io.IOException; import java.io.PrintWriter; import ...

  2. java session失效之后跳转_详解springmvc控制登录用户session失效后跳转登录页面

    springmvc控制登录用户session失效后跳转登录页面,废话不多少了,具体如下: 第一步,配置 web.xml 15 第二步,配置spring-mvc.xml 第三步,写拦截器SystemSe ...

  3. Shiro中Session过期页面跳转回登录页面处理问题

    Session超时的两种情况: shiro在管理session后,在session超时会进行跳转,这里有两种情况需要考虑,一种是ajax方式的请求超时,一种页面跳转请求的超时: 解决问题的思路:通过定 ...

  4. Shiro session过期跳转到登录页面问题

    Shiro session过期跳转到登录页面问题 shrio的session过期后(工程重启或者用户长时间没进行任何操作),当客户端再次向服务端发起请求时,shrio会判断用户没有登录授权,然后对请求 ...

  5. 创建MyFilter1类过滤器,对于未登陆用户(如果session对象中包含用户名就认为已登录)进行过滤跳转到登录页面

    XML的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...

  6. php拦截登录页面跳转页面,PHP未登录自动跳转到登录页面

    PHP未登录自动跳转到登录页面 下面一段代码给大家分享php未登录自动跳转到登录页面,具体代码如下所示: namespace Home\Controller; use Think\Controller ...

  7. dede login.php,DedeCms会员登录成功,又跳转到登录页面

    我使用的是dedecms5.7的sp1版本,整合了Discuz+UChome,三个都通信成功.然后后面我测试同步登录和退出的时候,发现dede的会员登录成功,但是又马上跳转到登录页面,就是说不能进入会 ...

  8. php未登录跳到登陆页面,vue实现未登录跳转到登录页面的方法

    环境:vue 2.9.3; webpack;vue-router 目的:实现未登录跳转 例子:直接在url地址栏输入...../home,但是这个页面要求需要登陆之后才能进入,判断的值就通过登陆之后给 ...

  9. java web实现页面跳转页面_JavaWeb过滤器实现页面跳转至登录页面

    需求说明: 1.用户登录某页面一段时间之内,如果无任何操作,跳转至登录页面. 2.用户在非登录状态下,无法访问项目下的某些页面. 解决方式: 通过session过滤器实现对请求的过滤,如果未登录跳转至 ...

最新文章

  1. x86 cpu卷积网络的自动调谐
  2. WebForm页面生命周期及asp.net运行机制
  3. 触发器与存储过程笔记
  4. Linux 内存管理之vmalloc
  5. 【Oracle】配置客户端监听
  6. 我们常说的算法时间复杂度和空间复杂度到底是什么?
  7. 关于gcc的一点小人性化提示
  8. flex布局 占满_果冻公开课第九课:打破传统布局方式的flex(上)
  9. python读取地震信号【sgy,segy】
  10. 【VMware】Assuming drive cache: write through
  11. python后台研发工程师面试题_今日头条面试题之后台Python研发
  12. pygame学习笔记——检测鼠标碰到、点击图片
  13. selenium之判断是否定位正确
  14. wordpress 数据库_在WordPress中使用数据库
  15. NGS项目四:高通量测序在植物生物胁迫研究中的应用
  16. 企业拥有PMO(项目管理办公室)的好处
  17. 敏捷开发:5种主流开发方法介绍
  18. 【STM32F407开发板用户手册】第19章 STM32F407的GPIO应用之按键FIFO
  19. 无线通信基础知识1:电磁波产生的原因
  20. 数字孪生论文阅读笔记【1.1】

热门文章

  1. python仿真智能驾驶_基于Python的3R机器人运动仿真
  2. upload-labs_pass21_CTF逻辑老饶了
  3. Java知识系统回顾整理01基础04操作符05赋值操作符
  4. 移植 uC/OS-III 到 STM32
  5. 统计字符串中某个字符的个数
  6. Node_初步了解(4)小爬虫
  7. Visual Studio 2017 调试 windows server 2016 Docker Container
  8. SVN本地代码未提交而被覆盖
  9. jQuery Mobile 手动显示ajax加载器,提示加载中...
  10. C# 多线程修改控件时遇到:创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke