java+struts2防盗链(filter不可过滤action)_四种filter过滤器

其他范文 时间:2020-02-27 15:42:22 收藏本文下载本文
【www.daodoc.com - 其他范文】

java+struts2防盗链(filter不可过滤action)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“四种filter过滤器”。

Java+struts2防盗链 Author:Rose(wangjiaoe)Time:20101028

前段时间使用到了防盗链,使用时用的是过滤器filter,其中遇到了问题,最后对action无法过滤问题得到了解决,这儿写个小笔记记录一下。

防盗链: 解释一下什么是防盗链:就是防止在没有通过合理的登陆界面,直接进入到系统中.

优点:避免在每个页面判断是否获得seion,虽然在里也是判断是否或的seion,但是代码简单,重用性高.

1步:建立一个类实现Filter package com.l99.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.HttpSeion;/**

* 实现filter()

*

* @author filter

*

*/

public cla LoginFilter implements Filter {

HttpSeion seion =((HttpServletRequest)request).getSeion();System.out.println(seion.getAttribute(“userInfo”));//测试用 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException { public void destroy(){ } // TODO Auto-generated method stub

}

{ } } //测试用,获取请求的地址System.out.println(((HttpServletRequest)request).getRequestURI();//如果是登录就放行

if(“/RightManage/login.jsp”.equals(((HttpServletRequest)request).getRequestURI()))// 放行

chain.doFilter(request, response);} else {

if(seion.getAttribute(“userInfo”)== null){ // 重定向到登录界面,或提示没有权限

((HttpServletResponse)response).sendRedirect(“/login.jsp”);} } public void init(FilterConfig filterConfig)throws ServletException // TODO Auto-generated method stub

2.配置XML:

loginFilter

com.l99.filter.LoginFilter//文件全路径

//下面是你要防盗的页面,可以有多个或一个,因为在大型项目中,jsp页面分类会很细,可能装载在不同的文件夹所以可以有多对

loginFilter

*.jsp

loginFilter

/form/cfa/* //过滤在form文件夹下,cfa子文件夹中的jsp页面

注释:测试就实现了简单的登录过滤

二:加入struts2 ,对action进入过滤

注意:Filter好像只可以过滤jsp,不可以过滤action,过滤action最好用拦截器 1.XML 配置

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

2.创建拦截器类,实现Interceptor

package com.l99.web.right.interceptor;

import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSeion;

import org.apache.struts2.ServletActionContext;

import com.l99.right.ManageUserInfo;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;/**

* 登录、权限拦截器,实现interceptor

* @author Owner

*

*/

public cla LoginInterceptor implements Interceptor{ public void destroy(){

} // TODO Auto-generated method stub

public void init(){ } /**

* 拦截器

*/

public String intercept(ActionInvocation invocation)throws

//获取uri

//获取request

ActionContext context = invocation.getInvocationContext();HttpServletRequest request = //获取seion

HttpSeion seion = request.getSeion();//获取请求的路径

String path = request.getRequestURI();//判断是否登录,如果登录判断是否有访问的权限

if(seion.getAttribute(“userInfo”)== null){ // 重定向到登录界面

//request.getRequestDispatcher(“/login.jsp”);此方式用下面的 // TODO Auto-generated method stub

Exception {(HttpServletRequest)context.get(ServletActionContext.HTTP_REQUEST);Action.LOGIN;代替

return Action.LOGIN;

}

} }else{

} return invocation.invoke();//判断访问的是否是 需要指定的权限的用户

if(path.contains(“/sysFun/right.action”)){

} ManageUserInfo userInfo =(ManageUserInfo)if(!“超级管理员”.equals(userInfo.getRoleName())){ } request.setAttribute(“error”, “对不起,您没有访问权限”);return Action.ERROR;seion.getAttribute(“userInfo”);

3.struts.xml配置

cla=“com.l99.web.right.interceptor.LoginInterceptor”>

Hello world

-->

/WEB-INF/pages/error.jsp /login.jsp

/WEB-INF/pages/manage_sysfun/right.jsp

“com.l99.web.right.EditManageSysFunAction”>

……………其它action

注意:拦截器类中的return Action.LOGIN;找到的是struts2中struts.xml中的全局变量

/WEB-INF/pages/error.jsp /login.jsp

中的name=login,返回到相应的地方,这儿是登录界面/login.jsp

到这儿就完成了!

前几天写了个filter,配置后过滤不了action请求。

在网上查看了资料,看了下struts2的源码,发现struts在FilterDispatcher中调用action。因此,在配置filter的时候一定要将自定义的filter放在FilterDisafcher前面。这样就可以过滤action请求了,不然action都执行完了在调用自定义的filter,肯定过滤不了action啦。filter执行顺序跟配置的先后有关,先配置的先执行

下载java+struts2防盗链(filter不可过滤action)word格式文档
下载java+struts2防盗链(filter不可过滤action).doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文