`

校验用户是否登录过滤器Filter

 
阅读更多

1、首先需要在web.xml中配置过滤器

 

<!-- servlet 校验是否登录过滤器 -->
   <filter>
	  <filter-name>CheckLoginFilter</filter-name>
	  <filter-class>net.cnki.tpi.cms.util.CheckLoginFilter</filter-class>
	  <init-param>
	  <param-name>redirectURL</param-name>
	  <param-value>/login.jsp</param-value>
	  </init-param>
	  <init-param> 
	       <param-name>notCheckURLList </param-name> 
	       <param-value>/error.jsp;/login.jsp</param-value> 
	  </init-param> 
   </filter>
   <filter-mapping>
	  <filter-name>CheckLoginFilter</filter-name>
	  <url-pattern>/*</url-pattern>
   </filter-mapping>

 2、然后新创建一个CheckLoginFilter.java类,代码如下:

 

	/**
 *  校验用户是否已登录过滤器
 * @author lpz
 *
 */
public class CheckLoginFilter implements Filter {
	
	private FilterConfig filterConfig = null;         
     private String redirectURL = null;         
     private List notCheckURLList = new ArrayList();    

    public CheckLoginFilter() {
    }

	public void destroy() {
		notCheckURLList.clear();
	}

	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest)servletRequest;
		HttpServletResponse response = (HttpServletResponse)servletResponse;
		HttpSession session = request.getSession();
		Object userInfo = session.getAttribute("userInfo");
		if(!checkRequestURIIntNotFilterList(request) && userInfo==null){
			 //重定向到指定页面
			 response.sendRedirect(request.getContextPath() + redirectURL); 
		}else{
			//继续响应请求
			chain.doFilter(servletRequest, servletResponse);
		}
	}
	
	public void init(FilterConfig fConfig) throws ServletException {
		this.filterConfig = fConfig;
		redirectURL = filterConfig.getInitParameter("redirectURL");
		String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");
		if(!MyStringUtil.isNullOrEmpty(notCheckURLListStr)){
                        //将字符串转化为list
			notCheckURLList = MyStringUtil.convStrToList(notCheckURLListStr,";");
		}
	}
	/**
	 * 校验当前请求是否在不过滤的列表中
	 * @param request
	 * @return
	 */
	private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)         
	{         
	    String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());         
	    return notCheckURLList.contains(uri);         
	}    

}

 

分享到:
评论

相关推荐

    PHP中filter函数校验数据的方法详解

    介绍PHP中filter函数校验数据的方法详解,PHP过滤器包含两种类型:Validation用来验证验证项是否合法 、Sanitization用来格式化被验证的项目,因此它可能会修改验证项的值,将不合法的字符删除。 input_filters_list...

    logstash_filter_LDAPresolve:LDAPresolve 过滤器将根据提供的 uidNumber 信息的 LDAP 请求将字段“登录”、“用户”和“组”添加到事件中

    LDAPresolve Logstash 插件 ...与所有过滤器一样,此过滤器一次仅处理 1 个事件,因此如果您的网络延迟较高,则使用此插件会显着降低管道的吞吐量。 为了减少减速,提供了缓存机制。 缓存中保存着给定

    chapter11_4.rar

    过滤器filter是servlet技术中心最实用的技术。过滤器是处于客户端与服务器资源文件之间的一道过滤网,过滤一些不符合要求的请求。通常他被用作Session校验,判断用户权限,如果不符合设定条件,就会被拦截到特殊的...

    CAS客户端JAR包版本3.3.3

    -- 该过滤器使得开发者可以通过 org.jasig.cas.client.util.AssertionHolder 来获取用户 的登录名。 比如 AssertionHolder.getAssertion().getPrincipal().getName()。 --&gt; &lt;filter&gt; &lt;filter-name&gt;CAS ...

    《Java-Web应用开发基础》教学课件08课程设计实例.pptx

    定义Servlet过滤器时,要实现位于javax.servlet包中的Filter接口。Filter接口定义了3个抽象方法:init()、doFilter()和destroy()。自己定义的Servlet过滤器必须具体化这3个抽象方法。 《Java-Web应用开发基础》教学...

    spring+springmvc+mybatis项目案例实现用户角色权限管理

    整合hibernate.validator校验器对controller接口参数进行校验 使用了springmvc统一异常处理 使用了FormattingConversionServiceFactoryBean对于传入参数中日期或数字字符串进行数据转换和数据格式化 使用了...

    毕业设计:医院在线预约挂号管理系统

    该系统使用JavaEE景点三层架构来...权限模块需要使用RBAC权限模式设计数据表,必要时要用SpringMVC框架的Filter过滤器来过滤权限,为了保证菜单的加载速度,将菜单写入Session. 内含项目完整代码,数据库及配套报告。

    php判断邮箱地址是否存在的方法

    filter_var是PHP内置的一个变量过滤的方法, 提供了很多实用的过滤器, 可以用来校验整数、浮点数、邮箱、URL、MAC地址等。 具体的过滤器参考: filters.validate filter_var如果返回false, 说明变量无法通过过滤器,...

    单点登录sso-shiro-cas-maven

    最后我们还需要在/spring-node-1/src/main/webapp/WEB-INF/web.xml 文件中配置相关的过滤器拦截全部请求 ``` xml &lt;filter&gt; &lt;filter-name&gt;shiroFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.springframework.web....

    dubbo_validator_filter

    dubbo_validator_filter dubbo调用校验过滤器 使用hibernate-validator作为校验实现 统一异常拦截处理 在进入方法调用前,校验参数,如果检验失败则直接返回,不再调用方法

    网页教程《跟姐姐学JSP》

    7.2. 用filter控制用户访问权限 7.3. filter所谓的特性 7.3.1. 请求映射 7.3.2. 过滤链 7.4. filter的详细配置 8. 配置listener监听器 8.1. 使用HttpSessionListener 8.2. 使用HttpSessionBindingListener 9. ...

    基于JavaWeb的期刊管理系统+课设报告.zip

    20. 新增动态首页跳转功能(filter过滤器实现)以及单独点击期刊详情页面 21. 匹配后端随机生成图片信息,以及期刊封面文件的上传 22. 设置UUID信息生成唯一图片识别码 23. 修改管理员搜索结果页以及图片上传返回...

    ZendFramework中文文档

    14.1.1. 什么是过滤器(filter)? 14.1.2. 过滤器的基本用法 14.1.3. 使用静态 get() 方法 14.2. 标准过滤器类 14.2.1. Alnum 14.2.2. Alpha 14.2.3. BaseName 14.2.4. Digits 14.2.5. Dir 14.2.6. ...

    Asp.net 中mvc 实现超时弹窗后跳转功能

    假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写 public class PowerFilter : AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { var cookie ...

    Java Web程序设计教程

    3.7项目实战——用户登录 59 本章小结 62 课后练习 63 第4章sql与jdbc 64 4.1sql 64 4.1.1sql概述 64 4.1.2ddl与dml简介 64 4.1.3sql使用方法 65 4.2jdbc 67 4.2.1jdbc概述 67 4.2.2jdbc驱动程序 68 ...

    DHCP客户端测试软件(dhcp for xcap)

    分析: 停止客户端的时候, 删除过滤器是通过callback函数删除的, 这里应该是通过filter来进行删除. self.widget.sniff.del_filter(self.callback)修改为 self.widget.sniff.del_filter(self.filter) 2, 设备无故发送...

    python入门到高级全栈工程师培训 第3期 附课件代码

    04 django模板之过滤器 05 django模板之控制语句if和for循环 06 django模板之标签tag补充 07 django模板之自定义filter和simple_tag 08 django模板之继承标签extend和添加标签include 第51章 01 数据库表与表之间...

    Delphi5开发人员指南

    12.4.1 获得有效驱动器和驱动器类型列 表 373 12.4.2 获取驱动器信息 374 12.4.3 获取Windows目录位置 376 12.4.4 获取系统目录的位置 376 12.4.5 获取当前目录 377 12.4.6 在目录中查找文件 377 12.4.7 复制和删除...

    数据挖掘weka数据分类实验报告.doc

    若所采用的 数据集中存在大量的与实验无关的属性,则需要使用weka平台的Filter(过滤器)实现属 性的筛选。 实验所需的训练集和测试集均为iris.arff。 四、实验过程及结果 应用iris数据集,分别采用LibSVM、C4.5决策树...

Global site tag (gtag.js) - Google Analytics