package com.jjyy.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 com.itheima.domain.User;
public class PrivilegeFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
//获取访问的资源uri
String uri = req.getRequestURI().substring(req.getContextPath().length());
//检查访问的资源是否是以/admin或/user开头,如果是则表明需要权限
if(uri.startsWith("/admin") || uri.startsWith("/user")){
//如果用户没有登录,则提示用户先进行登录操作
if(req.getSession(false)==null || req.getSession().getAttribute("user")==null){
resp.getWriter().write("该资源需要权限,请先进行登录!!");
resp.setHeader("Refresh", "3;url="+req.getContextPath()+"/login.jsp");
return;
}else{//如果用户已经登录
User user = (User) req.getSession().getAttribute("user");
if(uri.startsWith("/admin") && "admin".equals(user.getRole())){
//如果当前资源需要admin权限而当前用户是admin则放行
chain.doFilter(request, response);
}else if(uri.startsWith("/user") && "user".equals(user.getRole())){
//如果当前资源需要user权限而当前用户是user则放行
chain.doFilter(request, response);
}else{
//如果上面两个都不符合提示用户权限不足
throw new RuntimeException("您不具有对应的权限!!!!");
}
}
}else{//如果不是则不需要权限,直接放行
chain.doFilter(request, response);
}
}
public void init(FilterConfig filterConfig) throws ServletException {
}
}
分享到:
相关推荐
通过过滤器判断用户权限是实现应用安全访问控制的一种常见手段,尤其在Web应用程序中非常普遍。下面我们将基于提供的文件信息,深入探讨如何通过过滤器来判断用户的权限。 ### 一、UserPermissionFilter类详解 ###...
【标题】:“jsp 权限过滤器的应用” 在Java Web开发中,权限过滤器是实现用户访问控制的关键组件。它允许开发者对用户的请求进行预处理,根据用户的角色和权限来决定是否允许他们访问特定的资源。这篇博客文章,...
本篇文章将详细介绍如何通过Web应用中的过滤器来实现对用户访问权限的控制。 #### 一、过滤器的概念与作用 **过滤器(Filter)** 是Servlet容器提供的一个接口,它可以在请求达到目标资源(如Servlet或JSP页面)...
本案例中的"过滤器--控制不同权限用户访问不同文件夹代码.rar"是一个针对权限管理的具体应用,它允许开发者根据用户的权限级别决定他们可以访问哪些文件夹或资源。 过滤器的概念源自Java Servlet技术,它是Servlet ...
Struts权限过滤器是Java Web开发中用于控制用户访问权限的关键组件,主要应用于基于Struts 2框架的应用程序。在Struts 2框架中,过滤器扮演着重要的角色,它们在HTTP请求到达Action之前进行拦截,对请求进行预处理,...
2. **配置过滤器**:在`web.xml`配置文件中,我们需要为过滤器添加配置,指定它将应用于哪些URL模式。例如,如果我们要限制对所有管理员页面的访问,我们可以这样设置: ```xml <filter-name>privilegeFilter ...
本案例“过滤器应用案例”着重讲解了如何利用过滤器来实现用户登录状态的监控以及权限控制。 过滤器在JAVA2EE中的作用: 1. **数据转换**:过滤器可以对请求或响应的数据进行转换,如编码转换,字符集调整等。 2. *...
在这个例子中,我们的权限过滤器会在这个链中。 3. **身份验证**:过滤器首先检查请求的上下文(例如,通过session获取用户信息)以确定用户是否已登录。如果用户未登录,可以重定向到登录页面,或者返回错误信息。 ...
4. **权限过滤器**:根据用户的权限控制访问。过滤器可以检查用户的角色,如果用户不具备访问某个资源的权限,返回错误信息或重定向到无权限页面。 5. **GZIP压缩过滤器**:提高网站性能,通过压缩HTTP响应内容减少...
接下来,我们将按照以下步骤来创建一个简单的用户权限过滤器: 1. **创建过滤器类**: 在`src`目录下创建一个新的Java类,例如`UserAuthorizationFilter`,实现`Filter`接口。你需要重写`doFilter()`方法,在这个...
在现代软件开发过程中,特别是Web应用程序中,为了实现灵活高效的业务逻辑处理及控制流管理,常常会使用到两种设计模式:拦截器(Interceptor)与过滤器(Filter)。这两种技术虽然在功能上有一定的相似之处,但其...
3. **实现用户权限过滤器** - 创建自定义Filter:你需要创建一个实现`javax.servlet.Filter`的类,并在`doFilter()`方法中编写权限检查逻辑。 - 注册Filter:将自定义Filter添加到Web应用的部署描述符(`web.xml`)...
Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在HTTP请求到达...过滤器提供了一种灵活的方式来增强应用程序的功能,无需修改原有的Servlet代码,对于权限控制、日志记录、性能监控等场景非常实用。
四、过滤器应用场景 1. **安全控制**:验证用户登录状态,防止未授权访问。 2. **数据处理**:如字符编码转换,确保请求和响应的数据格式一致。 3. **性能监控**:记录请求响应时间,帮助优化性能。 4. **日志记录**...
过滤器可以用来实现各种功能,如用户认证、权限检查、编码转换、日志记录等。在给定的文件片段中,我们看到了一个具体的过滤器配置示例,下面将详细解析这段配置及其背后的知识点。 ### 过滤器的基本概念 过滤器是...
- 安全性控制:过滤器可以在请求到达应用之前检查权限,阻止未授权的访问。 - 日志记录:过滤器可以记录请求和响应的相关信息,便于进行调试和监控。 - 编码处理:过滤器可以统一处理请求和响应的字符编码,确保数据...
总的来说,通过使用过滤器,我们可以灵活地在多个层面上实现权限控制,确保了Web应用程序的安全性。`LoginFilter`是这种控制机制的一个实例,它在用户访问受保护资源之前检查其登录状态,从而提供了基础的访问控制。...
### JAVA过滤器标准代码解析与应用 在Java Web开发中,过滤器(Filter)是一种用于拦截请求和响应的重要机制,可以实现对用户请求的预处理和后处理,以及对响应的处理。本文将深入解析“JAVA过滤器标准代码”,探讨...
"Web过滤器 c#"的讨论涉及了四种主要类型的过滤器,以及如何利用开源库"WebMIS.GoldFilterOpenSource"来增强你的应用功能。理解并熟练运用这些过滤器,可以显著提升你的Web应用的质量和安全性。
在IT领域,过滤器(Filter)是一个非常关键的概念,尤其在Web开发中,它被广泛应用于数据处理和请求响应的预处理或后处理。这里提到的"过滤器.zip"文件包含了一系列的示例项目,从filter_demo到filter_demo5,它们...