您的位置:首页 > 编程语言 > Java开发

用struts拦截器实现登录验证功能AuthorizationInterceptor

2011-11-06 20:51 459 查看
前段时间在项目中曾经用Struts的拦截器实现登录验证功能,AuthorizationInterceptor.java,现在分享下,哈

package com.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.*;
import com.opensymphony.xwork2.*;
import java.util.*;
/**
* @author http://www.cnblogs.com/jobscn/ */
public class AuthorizationInterceptor extends AbstractInterceptor {
private String ignoreActions;

// ignoreActions属性的getter方法
public String getIgnoreActios() {
return ignoreActions;
}

// ignoreActions属性的setter方法
public void setIgnoreActions(String ignoreActions) {
this.ignoreActions = ignoreActions;
}

@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext ctx = invocation.getInvocationContext();

Map session = ctx.getSession();
String user = (String) session.get("username");

boolean ignore = false;
String currentAction = invocation.getProxy().getActionName();
String[] actions = ignoreActions.split(",");

for (String action : actions) {
if (currentAction.matches(action.trim())) {
ignore = true;
break;
}
}

if (user != null || ignore == true) {

return invocation.invoke();
} else {
return Action.LOGIN;
}

}
}
在struts.xml文件里面配置该拦截器:

<interceptors>
<interceptor name="authorization" class="com.interceptor.AuthorizationInterceptor" />
<interceptor-stack name="myStack">
<interceptor-ref name="authorization">
<param name="ignoreActions"> validate_code,register.*,.*login.*,upload,connector</param>
</interceptor-ref> <interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: