您的位置:首页 > 其它

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

2013-08-18 21:54 603 查看
Java 代码:

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 代码:

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 登陆过滤结束-->    

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: