`

用户的访问权限过滤器,防止用户直接输入URL直接访问资源。

    博客分类:
  • Java
阅读更多

刚写完用户的访问权限过滤器,基本实现了防止用户直接输入URL访问资源。如有不足请指正!

Java 代码:

package com.viano.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;   
/**  
 * 用户访问权限的过滤器  
 * @author viano  
 */  
public class UsersFilter implements Filter {   
  
    public void destroy() {   
        // TODO Auto-generated method stub   
           
    }   
  
    public void doFilter(ServletRequest request, ServletResponse response,   
            FilterChain chain) throws IOException, ServletException {   
        // 设置请求的字符编码   
        request.setCharacterEncoding("UTF-8");   
        // 设置返回请求的字符编码   
        response.setCharacterEncoding("UTF-8");   
        // 转换ServletRequest为 HttpServletRequest   
        HttpServletRequest req = (HttpServletRequest) request;   
        // 转换ServletResponse为HttpServletRequest   
        HttpServletResponse res = (HttpServletResponse) response;   
        // 获取Session   
        HttpSession session = req.getSession();   
        // 获取Session中存储的对象   
        Object o = session.getAttribute("user");   
        // 获取当前请求的URI   
        String url = req.getRequestURI();   
        // 判断Session中的对象是否为空;判断请求的URI是否为不允许过滤的URI   
        if (o == null    
            && !url.endsWith("login.jsp")     // 对URL地址为此结尾的文件不过滤   
            && url.indexOf("login.do") < 0    // 对URL地址中包含此字符串的文件不过滤   
            && url.indexOf("/images/") < 0) {   
            res.sendRedirect(req.getContextPath() + "/login.jsp");   
        } else {   
            chain.doFilter(request, response);   
            res.setHeader("Cache-Control","no-store");         
            res.setDateHeader("Expires",0);      
            res.setHeader("Pragma","no-cache");    
            res.flushBuffer();   
        }   
           
    }   
  
    public void init(FilterConfig filterConfig) throws ServletException {   
        // TODO Auto-generated method stub   
           
    }   
  
}  

 

WEB.XML 代码:

<!-- Filter 登陆过滤开始-->    
 <filter>  
  <filter-name>UsersFilter</filter-name>  
  <filter-class>com.viano.filter.UsersFilter</filter-class>  
 </filter>  
 <filter-mapping>  
  <filter-name>UsersFilter</filter-name>  
  <url-pattern>/*</url-pattern>  
 </filter-mapping>  
<!-- Filter 登陆过滤结束-->  

  

分享到:
评论
1 楼 lmstill 2014-04-25  
[img]
引用
[/img]

相关推荐

    java禁止直接url访问图片

    综上所述,Java禁止直接URL访问图片涉及多个方面,包括Web服务器配置、Java Servlet、权限验证、过滤器、防盗链技术以及CDN的使用等,这些都需要开发者深入理解和灵活运用。通过这些手段,我们可以有效地保护网络...

    带过滤器的登录系统jsp+myeclipse+mysql

    2. **过滤**:当用户请求某个资源时,过滤器首先被调用。在这里,它检查请求上下文(比如session)中是否存在有效的用户信息。 3. **处理**:如果发现用户未登录,过滤器会阻止请求继续,并将响应重定向到登录页面...

    过滤器进行登录操作

    例如,将所有与管理员相关的请求路径映射到登录过滤器,防止未授权访问。 5. **异常处理**:在过滤器中捕获登录相关的异常,如用户名或密码错误,可以统一处理这些异常,提供友好的错误提示,而不是暴露系统的具体...

    day17过滤器 禁止缓存中文乱码自动登录MD5加密url级别权限控制

    URL级别的权限控制是指根据用户角色的不同,授予他们对特定URL的访问权限。这通常通过拦截请求,检查用户的身份和权限来实现。在Spring Security或者Struts2等框架中,我们可以配置访问控制规则,限制不同用户可以...

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

    2. **配置Filter**:在`web.xml`中配置`Filter`,包括定义`&lt;filter&gt;`、`&lt;filter-mapping&gt;`元素,指定过滤器的类名以及需要拦截的URL模式。 3. **Filter链**:多个`Filter`可以串联形成一个`Filter Chain`,按照配置...

    Servlet之过滤器

    总结起来,Servlet过滤器是Java Web开发中的强大工具,能够帮助我们执行预处理和后处理任务,如验证非法字符、控制用户访问权限以及统一数据编码。通过合理配置和组合使用过滤器,我们可以构建出安全、高效且易于...

    mvc模式过滤器简单注册登录

    3. **安全过滤**:为了防止SQL注入和XSS攻击,过滤器还可以对用户输入的数据进行清洗和转义,确保数据安全。 **MySQL数据库连接** MySQL是一种流行的开源关系型数据库管理系统,广泛用于存储和管理应用程序的数据...

    过滤器 java servlet

    - **权限控制**:通过过滤器实现登录检查,未登录用户访问特定页面时,可以重定向到登录页面。 - **日志记录**:记录HTTP请求的详细信息,帮助调试和分析系统行为。 - **性能监控**:统计请求处理时间和资源消耗,...

    servlet高级应用过滤器、防盗链等一系列技术工具打包

    通过Servlet过滤器,我们可以实现基于URL的权限验证,只有具备相应权限的用户才能访问特定的资源。 字符过滤是另一个关键的安全措施,主要针对用户输入的合法性检查。它可以防止SQL注入、XSS攻击等安全风险,确保...

    servlet过滤器

    Servlet过滤器是Java Web开发中的一个重要概念,它在请求到达目标Servlet或JSP之前进行拦截,处理后再将请求传递给目标资源,或者直接修改响应内容。这个机制使得开发者能够实现跨多个请求和响应的通用功能,如数据...

    控制访问网站权限的javaWeb小项目

    在访问受保护资源之前,过滤器会验证用户是否具有相应的访问权限。 6. **拦截器(Interceptor)**:如果项目使用了如Spring MVC这样的MVC框架,拦截器可以进一步增强权限控制。拦截器在控制器方法执行前进行预处理...

    servlet验证码制作和过滤器

    3. **登录验证**:在用户访问受保护资源之前,过滤器可以检查用户是否已登录,未登录则重定向到登录页面。 4. **缓存控制**:设置响应头,控制浏览器缓存策略,防止敏感信息被缓存。 5. **日志记录**:记录请求...

    web系统与技术--实验十一[文].pdf

    1. **数据预处理**:过滤器可以对请求数据进行预处理,例如验证用户输入,防止SQL注入等安全问题。 2. **数据后处理**:在响应返回给客户端前,过滤器可以对响应内容进行处理,如添加版权信息、压缩响应内容等。 3. ...

    springboot+shiro+layuimini实现后台管理系统的权限控制

    2. **权限控制**:用户登录后,所有请求都会经过Shiro的过滤器链,Shiro会根据Subject中的权限信息判断用户是否有权限访问资源。 3. **前端展示**:LayuiMini根据Shiro的权限信息动态渲染界面,比如隐藏无权限的按钮...

    PHP权限管理系统源代码

    源代码应遵循最佳安全实践,如使用预编译的SQL语句防止SQL注入,对用户输入进行过滤和转义来防止XSS攻击。 8. **权限控制策略**:权限系统可能使用ACL(Access Control List)或RBAC模型。ACL允许为每个个体指定...

    单点登录与权限管理(web api)-NET版本.rar

    单点登录(Single Sign-On, SSO)是一种网络身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。在.NET框架下实现SSO,通常会利用微软的身份验证服务(Identity)和OAuth 2.0等...

    java核心技术-java中监听器和过滤器的使用笔记

    - **身份验证与权限管理**:Filter可以检查用户请求,确保只有经过认证的用户才能访问特定资源。 - **日志记录**:用于记录用户的特定请求,便于后期分析和审计。 - **数据解码**:处理不标准编码的请求,确保...

    Oracle+数据库例子(数据库连接池+中文乱码+留言板+过滤器)

    在ch20过滤器用户登录验证中,你会看到如何使用过滤器来验证用户是否已登录,这是一个常见的应用场景,可以防止未授权的访问。 总的来说,这个压缩包提供了丰富的实践案例,涵盖了数据库连接池的管理、字符编码的...

    Java ssh 权限系统 开发视频教程 第16讲(超清版).mp4

    Spring Security支持基于角色的访问控制(RBAC),允许我们为每个角色分配特定的权限,然后根据用户的角色决定其对资源的访问权限。 3. **访问控制**:这通常涉及到URL级别的过滤器,如Spring Security的...

    java实现的b_s权限管理系统

    7. **URL权限过滤**:通过拦截URL请求,根据用户的权限判断是否允许访问。Spring Security可以通过配置访问决策管理器和访问决策投票器来实现这一功能。 8. **JSP/HTML及CSS/JavaScript**:前端界面的构建,通常...

Global site tag (gtag.js) - Google Analytics