`

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

阅读更多
用Filter防止用户访问一些未被授权的资源,比如一个用户未登录就不允许访问网站的某些页面,并将页面重定向到需要用户登录的页面,下面是一个相关的例子:


package com.drp.util.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()); //截取到当前文件名用于比较

HttpSession session = request.getSession(false);

if (!"/login.jsp".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里添加: (请注意,过滤是在serlvet规范2.3版中初次引入的。因此,web.xml文件必须使用DTD的2.3以上版本。)



<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>com.drp.util.filter.AuthFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>*.jsp</url-pattern>//表示对所有jsp文件有效
</filter-mapping>



这样用户没有登录的情况下就会转到登录页面。
分享到:
评论

相关推荐

    java后台权限控制

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

    Filter进行权限控制

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

    Java Filter 限制用户浏览权限

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

    filter 实现权限控制

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

    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测试代码

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

    java权限管理系统

    Java权限管理系统是一个核心功能在于控制用户访问权限的软件模块,它在企业级应用开发中扮演着至关重要的角色。本系统采用Java语言,并结合Apache Shiro框架实现,为开发者提供了一套高效、灵活的权限管理解决方案。...

    Filter控制页面的访问权限

    【Filter控制页面的访问权限】是指在Web应用中,通过Filter(过滤器)技术来实现对用户访问特定页面的权限管理。Filter是Java Servlet API的一部分,它可以拦截HTTP请求,在请求到达目标Servlet或JSP之前进行预处理...

    spring boot 拦截器拦截/Filter 过滤session案例

    在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...

    javaweb实现的访问权限控制示例

    通过上述讲解,你应该对如何在Java Web中使用Filter实现访问权限控制有了基本的理解。在深入研究这个示例的博客文章(https://blog.csdn.net/yuzhiqiang_1993/article/details/81288912)后,你可以了解到更多具体...

    java web权限访问过滤器

    在Java Web开发中,权限访问控制是至关重要的一个环节,它确保了只有具有特定权限的用户才能访问特定的资源或执行特定的操作。本教程将详细讲解如何使用Java Web中的过滤器(Filter)来实现这样的访问控制。过滤器是...

    java权限控制系统.zip

    在IT行业中,权限控制是系统安全的关键组成部分,尤其是在企业级应用和互联网服务中。Java作为广泛应用的编程语言,提供了多种实现权限控制的框架和技术。本压缩包“java权限控制系统.zip”包含两个主要部分:`...

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

    Java Filter在项目开发中的应用广泛且灵活,不仅可以用于统一字符编码,防止乱码,还可以进行权限控制、日志记录、GZIP压缩等多种操作。通过自定义过滤器并正确配置,我们可以极大地增强Web应用程序的安全性和用户...

    filter 过滤用户权限

    以下是一个简单的Java Filter实现示例,用于检查请求中的session中是否存在登录用户的信息: ```java import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; ...

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

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

    filter的使用 java 过滤器的几种使用方法

    过滤器在Java Web应用中扮演着“守门人”的角色,它通过`javax.servlet.Filter`接口定义,可以拦截用户请求和服务器响应,对数据进行预处理或后处理。实现过滤器需要完成三个主要方法:`init()`、`doFilter()`和`...

    filter过滤器实现权限访问控制以及同一账号只能登录一台设备

    `Filter`过滤器是Java Servlet技术中的一种机制,用于对HTTP请求和响应进行预处理和后处理,从而实现诸如权限验证、数据转换、日志记录等功能。在这个场景中,我们将探讨如何使用`Filter`来实现权限访问控制,以及...

    利用Filter限制用户浏览权限

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

    java禁止直接url访问图片

    标题“Java禁止直接URL访问图片”涉及到的是网络资源保护和权限控制的问题,主要知识点包括: 1. **HTTP请求与响应**: 当用户通过浏览器或其他客户端工具输入一个URL来访问图片时,实际上是发送了一个HTTP GET...

Global site tag (gtag.js) - Google Analytics