`
guochongcan
  • 浏览: 321134 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Filter防止用户访问一些未被授权的资源

    博客分类:
  • SSH
阅读更多

用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>


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

 

分享到:
评论

相关推荐

    防止用户在没有登录的情况下访问受保护资源

    防止用户在没有登陆的情况下,访问受保护资源,在web.xml文件中添加! &lt;filter&gt; &lt;filter-name&gt;RightFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.com.filter.RightFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-...

    预防XSS攻击和SQL注入XssFilter

    攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是...

    filter过滤器防止恶意注入

    简单过滤器防止恶意攻击 java中的用法

    filter 防止SQL注入(替换特殊字符版)

    filter 防止SQL注入 替换特殊不合格字符。 &lt;!-- 防SQL注入 &lt;filter&gt; &lt;filter-name&gt;SQLFilter&lt;/filter-name&gt; &lt;filter-class&gt;frame.struts.SQLFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-...

    用户授权才可以访问某些页面

    (使用Servlet+Filter+el等技术实现,实现了用户的部分权限,登录以后才能访问下载页面或上传页面(未实现上传或下载功能)

    filter+listener.pdf

    web 中的过滤器:当访问服务器的资源时,过滤器可以将请求拦 截下来,完成一些特殊的功能。 过滤器的作用: 用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤 2. 动态代理 2.1.概念: 在不改变一个类...

    Java Filter 限制用户浏览权限

    Java Filter 限制用户浏览权限,这是个很简单的例子,初学者也能看懂!

    防止多用户登录同一帐号

    &lt;filter-name&gt;SingleFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.com.filter.SingleFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;SingleFilter&lt;/filter-name&gt; &lt;url-pattern&gt;/* &lt;/filter-...

    Filter控制页面的访问权限

    Filter控制页面的访问权限Filter控制页面的访问权限Filter控制页面的访问权限

    防止sql注入的url过滤器【java filter】

    防止sql注入的url过滤器,简单配置即可!

    防止SQL注入和XSS攻击Filter

    防止SQL注入和XSS攻击Filter

    ISAPI Filter 限制 IIS 多线程访问

    使用 ISAPI Filter 实现的限制 IIS 多线程访问程序。主要应用在下载系统,或者使用 IIS 做的流媒体点播系统中,稍加修改可以使其具有认证功能。在程序中已经对 用户认证 事件做了直接返回的处理。使用本 Filter 可以...

    利用Filter拦截用户登录

    用户在没有登录的情况下,无法浏览除登录页面之外的其他页面,并且如果用户名为空,也不能进如其他页面。

    delphi资源-Filter中的模糊过滤

    Filter中的模糊过滤: 要实现模糊过滤,BDE中要用“*”,不允许使用“Like”关键字,且只能向后匹配,如“Fcode=’101*’”;而ADO则是使用“%”或“*”都可以,可以使用“Like”关键字,且和SQL语句用法一致,可以...

    12_JavaWeb——Filter&Listener案例资源

    此资源与我的博客12_JavaWeb——Filter&Listener中的案例对应,在11_JavaWeb——Cookie&Session案例资源基础上加上了过滤器,实现了对未登录用户的拦截,希望有所帮助。

    利用Filter限制用户浏览权限

    利用java的filter实现用户浏览权限,不同权限用户的可以浏览不同的页面。

    用户登陆过滤器

    不允许未登陆用户访问的过滤器配置,filter,用户登陆过滤器,session判断用户登陆 不允许未登陆用户访问的过滤器配置

    防止SpringMVC拦截器拦截js等静态资源文件的解决方法

    本篇文章主要介绍了防止SpringMVC拦截器拦截js等静态资源文件的解决方法,具有一定的参考价值,有兴趣的同学可以了解一下

    shiroFilter权限验证

    -- 用户访问未对其授权的资源时,所显示的连接 --&gt; &lt;!-- 若想更明显的测试此属性可以修改它的值,如unauthor.jsp,然后用[玄玉]登录后访问/admin/listUser.jsp就看见浏览器会显示unauthor.jsp --&gt; /&gt; ...

Global site tag (gtag.js) - Google Analytics