`
happyqing
  • 浏览: 3198234 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中应用Filter对权限和Session控制 AuthFilter

阅读更多

 

看下面的代码一起来学习Java中应用Filter对权限和Session控制

在请求/app时,request.getRequestURI()

在tomcat下取得是 /app/

在websphere下取得是 /app,差一个/

package com.urt.module.filter;

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

public class AuthFilter implements Filter {

	public void destroy() {

	}

	public void doFilter(ServletRequest servletRequest,
			ServletResponse servletResponse, FilterChain filterChain)
			throws IOException, ServletException {
		/**
		 * 1,doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括 *
		 * 表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过 *
		 * 滤器中忽略此参数。最后一个参数为FilterChain,此参数用来调用servlet或JSP页。
		 */

		HttpServletRequest request = (HttpServletRequest) servletRequest;
		/**
		 * 如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中
		 * 无法得到的方法,就要把此request对象构造成HttpServletRequest
		 */
		HttpServletResponse response = (HttpServletResponse) servletResponse;

		String currentURL = request.getRequestURI(); // 取得根目录所对应的绝对路径:

		//String targetURL = currentURL.substring(currentURL.indexOf("/", 1),
				currentURL.length()); // 截取到当前文件名用于比较
String targetURL = currentURL.substring(request.getContextPath().length(), currentURL.length()); // 截取到当前文件名用于比较

		HttpSession session = request.getSession(false);

		if (!"/login.jsp".equals(targetURL) && !"/servlet/LoginServlet".equals(targetURL)) {
			// 判断当前页是否是重定向以后的登录页面页面,如果是就不做session的判断,防止出现死循环
			if (session == null || session.getAttribute("user") == null) {
				// *用户登录以后需手动添加session
				System.out.println("request.getContextPath()="
						+ request.getContextPath());
				response.sendRedirect(request.getContextPath() + "/login.jsp");
				// 如果session为空表示用户没有登录就重定向到login.jsp页面
				return;
			}
		}
		// 加入filter链继续向下执行
		filterChain.doFilter(request, response);
		/**
		 * 调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作 为它
		 * 的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另
		 * 一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。
		 */
	}

	public void init(FilterConfig filterConfig) throws ServletException {

	}
}

  

然后在配置文件web.xml里添加

<filter>
    <filter-name>AuthFilter</filter-name>
    <filter-class>com.urt.module.filter.AuthFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>/servlet/*</url-pattern>
  </filter-mapping>

 

这样用户没有登录的情况下就会转到登录页面

 

ajax Session失效如何跳转到登录页面
http://happyqing.iteye.com/blog/1976873

通用的用户登录过滤器(SessionFilter)

http://www.cnblogs.com/hemingwang0902/archive/2012/01/09/session-filter.html

 

分享到:
评论

相关推荐

    java写的一个权限控制的插件

    Java权限控制插件是软件开发中的一个重要组成部分,它主要用于管理和限制不同用户或角色对系统资源的访问。在本文中,我们将深入探讨这个基于Java编写的权限控制插件,特别是其核心概念、设计模式以及实现机制。 ...

    java后台权限控制

    Java 后台权限控制是构建安全的Web应用中不可或缺的一部分,它确保了用户只能访问他们被授权的操作和数据。在Java开发中,Apache Shiro是一个非常流行的安全框架,用于实现身份验证、授权(权限控制)、会话管理和...

    Filter进行权限控制

    总结,`Filter`在Java Web应用程序中扮演着重要的角色,尤其是在权限控制方面。通过创建和配置过滤器,可以实现对特定资源的访问限制,确保只有授权用户才能访问敏感信息。在实际应用中,还需要考虑其他安全措施,如...

    java后台请求http并保持Session

    当用户登录时,将用户信息存储在Session中,并返回Session ID。在后台请求中,通过设置Cookie来保持Session。 ```java // 假设在Servlet或Filter中处理登录 HttpSession session = request.getSession(); session....

    java中filter的用法(过滤器)

    这个Filter首先检查用户的Session是否存在,并且Session中是否有特定的键(`checkSessionKey`)。如果存在则放行,否则重定向到登录页面。 #### 四、配置Filter Filter需要在web.xml文件中进行配置,配置主要包括...

    Java Filter 限制用户浏览权限

    本话题主要关注如何使用Java Filter来限制用户的浏览权限,确保只有经过身份验证和授权的用户才能访问特定的资源。这在构建安全的Web应用程序时至关重要。 首先,我们需要了解Java Filter的基本概念。Filter是...

    filter 实现权限控制

    6. **会话管理**: 考虑到性能和用户体验,我们通常将用户的角色信息保存在Session中,避免每次请求都去查询数据库。 7. **异常处理**: 设置适当的异常处理机制,以处理权限验证失败等情况,确保系统的健壮性。 ...

    java权限控制

    这里的“java权限控制”主要指的是在Web应用程序中实施的安全策略,以保护敏感数据和操作。过滤器(Filter)是Java Servlet API提供的一种机制,常用于实现这种权限控制。下面将详细探讨这一主题。 1. **Java过滤器...

    java 中如何使用filter过滤器

    总的来说,Filter在Java Web开发中扮演着至关重要的角色,它提供了对HTTP请求和响应进行拦截、修改的能力,极大地增强了应用的功能性和灵活性。通过理解并熟练运用Filter,开发者可以更好地设计和实现复杂的业务需求...

    osgi session共享 支持springmvc 配置个filter即可

    总结来说,实现OSGi环境下的Session共享涉及了对OSGi、Karaf、Spring MVC以及Filter机制的理解和应用。通过编写并配置Filter,我们可以跨Bundle共享Session,从而使多个服务能够协同工作,保持用户状态的一致性。...

    Struts2:利用filter、session实现访问控制和身份认证[收集].pdf

    在 Web 应用程序中,身份认证和访问控制是非常重要的安全机制,本文将介绍如何使用 Struts2 中的 Filter 和 Session 实现访问控制和身份认证。 身份认证和访问控制的必要性 在 Web 应用程序中,身份认证和访问控制...

    java中的filter

    在实际开发中,我们经常使用一些开源工具库提供的`Filter`,如Spring Security的`Filter`用于权限管理,或者使用Google的Guava库中的`Filter`进行缓存控制。 通过上述介绍,我们可以看出`Filter`在Java Web开发中...

    JSP权限管理系统filter

    **JSP权限管理系统filter**是基于Java和JSP技术实现的一种常见的Web应用程序安全控制机制,主要目的是为了实现用户访问控制,防止未授权的用户访问敏感资源。在这个系统中,Filter(过滤器)扮演了关键角色,它在...

    j2ee项目使用filter和memcached实现session服务器

    在Java Web开发中,Filter是Servlet API的一部分,允许开发者在请求到达目标Servlet之前或之后拦截和处理请求。通过实现`javax.servlet.Filter`接口并重写`doFilter()`方法,我们可以对请求和响应进行预处理和后处理...

    java自学===Filter类的应用,验证用户

    总之,`Filter`是Java Web开发中的一个重要组件,它允许我们在不修改现有Servlet代码的情况下,灵活地增强和扩展应用的功能。在实际项目中,通过熟练掌握Filter的使用,我们可以实现高效且易于维护的安全控制和功能...

    Java登录注册列表小项目和Filter测试代码

    在Java编程领域,"Java登录注册列表小项目和Filter测试代码"是一个常见的实践项目,它涵盖了Web应用程序开发中的基础功能,如用户身份验证、权限控制以及数据操作。在这个项目中,开发者通常会创建一个简单的用户...

    利用Filter限制用户浏览权限

    在Java Web开发中,过滤器(Filter)是实现动态网页应用程序功能的重要组件之一。它能够对HTTP请求和响应进行预处理和后处理,为实现特定的功能提供了强大的支持。本话题将详细探讨如何利用Filter来限制用户浏览特定...

    Java EE中Filter技术的研究与应用.pdf

    在Java EE的Web开发中,Filter技术是一种非常重要的组件,它被广泛应用于处理请求和响应信息。Filter(过滤器)位于客户端请求和服务器响应之间,可以对数据进行动态拦截和修改,是Java EE技术中不可或缺的一部分。 ...

    Java-filter测试程序

    Filter在Java Web应用程序中扮演着中间件的角色,它可以对请求进行预处理,也可以对响应进行后处理。例如,我们可以通过Filter实现权限控制、日志记录、数据转换、GZIP压缩等多种功能。以下是对Filter生命周期和核心...

    Servlet Filter 实现权限拦截

    在实际应用中,Filter常用于实现权限拦截,防止未授权的用户访问特定资源。本教程将详细解释如何使用Servlet Filter来实现权限拦截。 ### 1. Filter的基本概念 Filter是Servlet API的一部分,定义在`javax.servlet...

Global site tag (gtag.js) - Google Analytics