読者です 読者をやめる 読者になる 読者になる

liguofeng29’s blog

個人勉強用ブログだっす。

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;
    }

}

2.struts.xmlにinterceptorを定義する

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