Struts2 - interceptor - 権限チェックを行う
1. interceptorを実装する
package interceptor; 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; // AbstractInterceptorを継承する public class AuthorityInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { ActionContext ctx = invocation.getInvocationContext(); // session取得 Map<String, Object> session = ctx.getSession(); String user = (String) session.get("user"); if (user != null && user.equals("Alex")) { return invocation.invoke(); } ctx.put("tip", "まだ登録してないね~"); return Action.LOGIN; } }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.devMode" value="false" /> <constant name="struts.convention.classes.reload" value="true" /> <package name="sample" extends="struts-default"> <!-- 権限interceptor --> <interceptors> <interceptor name="authority" class="interceptor.AuthorityInterceptor"/> </interceptors> <!-- グローバルResult --> <global-results> <!-- ログイン画面 --> <result name="login">/WEB-INF/content/loginForm.jsp</result> </global-results> <action name="login" class="action.LoginAction"> <result name="error">/WEB-INF/content//error.jsp</result> <result>/WEB-INF/content/welcome.jsp</result> </action> <action name="*"> <result>/WEB-INF/content/{1}.jsp</result> <interceptor-ref name="authority"/> </action> </package> </struts>