package com.sise.action; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; 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(); Object user = session.get("currentUserId"); boolean ignore = false; if (user != null || ignore == true) { return invocation.invoke(); } else { return Action.LOGIN; } } }
struct.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="default" extends="struts-default"> <interceptors> <interceptor name="loginInterceptor" class="com.sise.action.AuthorizationInterceptor"></interceptor> <interceptor-stack name="loginDefaultStack"> <interceptor-ref name="loginInterceptor"> <param name="ignoreActions"> validate_code,register.*,.*login.*,upload,connector</param> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="loginDefaultStack"></default-interceptor-ref> <global-results> <result name="login" type="redirect">/login.html</result> </global-results> <action name="index" class="com.sise.action.IndexAction" method="index"> <result name="success">/index.html</result> </action> <action name="login" class="com.sise.action.LoginAction" method="login"> <result type="redirectAction">index</result> <result name="login" >/login.html</result> <interceptor-ref name="defaultStack"></interceptor-ref> </action> </package> </struts>