`

Web访问登陆过滤器控制

    博客分类:
  • JAVA
 
阅读更多
web.xml
<filter>
    <filter-name>AuthFilter</filter-name>
	<filter-class>com.acconsys.capital.util.AuthFilter</filter-class>
	    <init-param>
		<param-name>excludeUrl</param-name>
		<param-value>login.action,loginSubmit.action</param-value>
	    </init-param>
	</filter>

<filter-mapping>
	<filter-name>AuthFilter</filter-name>
	<url-pattern>*.action</url-pattern>
</filter-mapping>




public class SystemConstants {

public static final String CURRENT_USER = "current_user";

}

AuthFilter.java

/*******************************************************************************
 * @project: Capital501
 * @package: com.acconsys.capital.util
 * @file: AuthFilter.java
 * @created: 2014-8-15
 * @purpose:
 * 
 * @version: 1.0
 * 
 * Revision History at the end of file.
 * 
 * Copyright 2014 AcconSys All rights reserved.
 ******************************************************************************/

package com.acconsys.capital.util;

import java.io.IOException;
import java.io.PrintWriter;

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 javax.servlet.http.HttpSession;

import com.acconsys.capital.common.SystemConstants;

public class AuthFilter implements Filter {
	
	private FilterConfig filterConfig = null;
	private String sysUrl;
	
	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		this.filterConfig = null;
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		try {
            HttpServletRequest httpRequest = (HttpServletRequest) request;
            HttpServletResponse httpResponse = (HttpServletResponse) response;

    		if(sysUrl == null) {
    			StringBuffer requestURL = httpRequest.getRequestURL();
    			String contextPath = httpRequest.getContextPath();
    			sysUrl = requestURL.substring(0, requestURL.indexOf(contextPath)) + contextPath;
    		}
            
            if(isExcludeUrl(httpRequest)) {
                chain.doFilter(request, response);
                return;
            }

        	HttpSession session = httpRequest.getSession(false);
        	if (session == null || session.getAttribute(SystemConstants.CURRENT_USER) == null) {
        		PrintWriter out = httpResponse.getWriter();
        		out.write("<script>window.top.location.href='" +httpRequest.getContextPath()
        				+ "/login.action'</script>");
        	}else{
        		chain.doFilter(request, response);
        	}
        } catch (Exception ex) {
        	ex.printStackTrace();
        }
	}
	
	private boolean isExcludeUrl(HttpServletRequest request) {
		String contextPath = request.getContextPath();
		String excludeUrl = filterConfig.getInitParameter("excludeUrl");
		String requestUri = request.getRequestURI();

		int questionIndex = requestUri.indexOf("?");
		if (questionIndex > 0) {
			requestUri = requestUri.substring(0, questionIndex);
		}
		String[] actions = excludeUrl.split(",");
		for (int i = 0; i < actions.length; i++) {
			if (requestUri.equals(contextPath + "/" + actions[i].trim())) {
				return true;
			}
		}
		return false;
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
	}

}


/*******************************************************************************
 * <B>Revision History</B><BR>
 * [type 'revision' and press Alt + / to insert revision block]<BR>
 * 
 * 
 * 
 * Copyright 2014 AcconSys All rights reserved.
 ******************************************************************************/




分享到:
评论

相关推荐

    servlet 过滤器做的简单登陆demo

    在这个“servlet过滤器做的简单登陆demo”中,我们将探讨如何利用过滤器实现一个基础的登录验证系统。这个例子非常适合初学者理解和实践过滤器的用法。 1. **Servlet Filter原理**: Servlet过滤器遵循`Filter`...

    Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转

    本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...

    SSM登陆验证之过滤器实现

    SSM(Spring、SpringMVC、MyBatis)框架是Java Web开发中常见的技术栈,其在处理用户请求时,通常会用到过滤器(Filter)进行预处理,以实现如登录验证等功能。本篇文章将深入讲解如何在SSM项目中通过过滤器实现登录...

    Servlet过滤器的简单使用源码+文档

    描述中提到的"实现一个登陆界面",表明了过滤器可能被用作验证用户登录状态的工具。 Servlet过滤器是基于Java的Servlet API实现的,主要通过实现`javax.servlet.Filter`接口来创建。`Filter`接口定义了三个核心方法...

    过滤器进行登录操作

    在Java Web开发中,过滤器(Filter)是一个强大的工具,常用于实现各种需求,如登录操作的处理。本文将深入探讨如何使用过滤器进行登录操作,以及这一过程中的相关知识点。 首先,我们要理解过滤器的基本概念。在...

    包含过滤器的一个简单登陆实例

    在IT领域,过滤器(Filter)是Web应用程序中一个重要的组件,主要负责处理HTTP请求和响应,实现诸如数据过滤、安全防护、权限控制等任务。本实例“包含过滤器的一个简单登录实例”将引导我们了解如何在实际项目中...

    idea+maven+springmvc 登录过滤器

    在IT行业中,构建一个安全的Web应用程序是至关重要的,而登录过滤器和请求拦截器是实现这一目标的关键组件。本文将详细讲解如何使用IntelliJ IDEA(Idea)、Maven和Spring MVC框架来创建一个登录过滤器,以及如何将...

    用过滤器验证登陆框架,简单实例

    标题中的“用过滤器验证登陆框架,简单实例”指的是在Web开发中,使用过滤器(Filter)技术来实现用户登录验证的一种常见方法。过滤器是Servlet技术的一部分,它允许我们在请求到达目标资源(如Servlet、JSP页面)...

    javaWEB总结(33):检查用户是否登陆过滤器

    综上所述,`javaWeb_33`这个文件可能包含了一个实现用户登录检查的Java Web过滤器示例,它展示了如何利用过滤器机制来确保只有登录用户才能访问受保护的资源。通过深入理解过滤器的工作原理和配置方式,开发者可以更...

    自动登陆+防止未登录直接访问+权限控制

    在Servlet中,我们可以创建一个实现了javax.servlet.Filter接口的类,然后在web.xml中配置该过滤器,设置它拦截所有敏感路径。过滤器会检查请求中是否包含有效的Session,如果没有,就重定向到登录页面。 三、角色...

    一个关于登陆的 过滤器

    5. **测试和调试**:部署应用后,尝试访问受过滤器保护的JSP页面,观察过滤器是否按预期工作。 这个经典例题将帮助初学者理解如何在实际项目中应用Filter进行权限控制,为Web应用添加一层安全防护。通过学习和实践...

    webapi登陆验证四种方式.docx

    2. **应用过滤器**:在需要进行身份验证的控制器或Action方法上添加上述定义的过滤器属性,或者在`Global.asax`文件中将其注册为全局过滤器。 ```csharp [FormAuthenticationFilter] public class TestController...

    s2s3h3、easyui界面、权限过滤、可使用json的简单登陆系统1

    在登录系统中,权限过滤通常通过拦截器或过滤器实现,检查用户的登录状态和角色权限,防止未授权的访问。在s2s3h3框架中,可能会使用拦截器来实现这一功能,确保只有合法用户才能访问特定的页面和功能。 4. **JSON...

    C#版本单点登录与权限管理(web api)

    6. **过滤器(Filters)**:在C# Web API中,可以使用过滤器实现全局的认证和授权检查。例如,使用`[Authorize]`属性可以限制只有经过身份验证的用户才能访问特定的API。 7. **跨域资源共享(CORS)**:由于浏览器...

    Java-filter过滤器在项目开发中的应用.docx

    Java-filter过滤器在项目开发中的应用 Java-filter过滤器是一种Java EE规范中的一种组件,用于...Java-filter过滤器在项目开发中的应用非常广泛,可以用于解决项目中的各种问题,例如字符编码问题、资源访问控制等。

    mybatis+servlet实现web登陆界面

    5. **Web应用架构**:这里采用的是经典的MVC(Model-View-Controller)模式,MyBatis作为模型层处理数据,Servlet作为控制器负责流程控制,而JSP(视图层)则呈现最终结果给用户。 6. **安全注意事项**:在实现登录...

    JSP学习之Java Web中的安全控制实例详解

    本文实例讲述了JSP学习之Java Web中的安全控制。分享给大家供大家参考。具体如下: 一、目标: ① 掌握登录之后的一般处理过程; ② 能够为每个页面添加安全控制; ③ 能够共享验证代码; ④ 使用过滤器对权限进行...

    购物商城实例,购物商城实例,Web

    过滤器权限判断流程("过滤器权限判断流程.png")是指在用户操作前进行的一种安全性检查。例如,只有已登录的用户才能查看其订单历史,或者管理员才能访问后台管理功能。这种机制有助于防止未授权的访问和数据泄露。 ...

    java_web 用户只能在一处登陆源码

    总之,这个"Java Web用户只能在一处登陆源码"项目涉及到Web应用的身份验证、会话管理、安全机制以及分布式环境下的SSO实现。通过学习和研究这个源码,开发者可以深入理解Java Web应用的登录流程以及SSO的相关技术。

    structs2拦截器做的阻止未登录的用户访问

    在Structs2中,拦截器是基于AOP(面向切面编程)理念实现的,它们可以看作是控制器方法执行前后的过滤器。通过定义和配置拦截器,我们可以拦截并处理HTTP请求,决定是否允许请求继续进行,或者返回错误信息、重定向...

Global site tag (gtag.js) - Google Analytics