ほとんどのアクションの前に実行され、メンバーがログインしているかどうかを確認する LoginInterceptor があります。そうである場合、そのページが表示されます。そうでない場合は、ログイン ページにリダイレクトされます。
ただし、インターセプターがすべての URL パラメーターを「ブロック」していることに気付きました。基本的に、アクションの前にインターセプターがある場合、このアクションの URL パラメーターはセッターに渡されません。
これは私のインターセプターです:
public class LoginInterceptor extends AbstractInterceptor {
public String intercept(final ActionInvocation invocation) throws Exception {
final String REDIR = "loginRedirect";
AuthenticationService auth = new AuthenticationService();
if (auth.isMemberLoggedIn()) {
return invocation.invoke();
} else {
return REDIR;
}
}
}
invocation.invoke()
アクションを呼び出すと思われますが、パラメーターはありません。
私はそれについて何ができますか?
アップデート:
AuthenticationService.isMemberLoggedIn()
public boolean isMemberLoggedIn() {
Map<String, Object> session = ActionContext.getContext().getSession();
String username = (String) session.get("username");
if (username != null) {
return true;
} else {
return false;
}
}
struts.xml
<package name="global" extends="struts-default">
<interceptors>
<interceptor name="loginInterceptor" class="community.interceptor.LoginInterceptor" />
</interceptors>
<global-results>
<result name="loginRedirect" type="redirect">/members/login</result>
</global-results>
</package>
次に、各パッケージを拡張global
し、各アクションでそれらを呼び出します。
<interceptor-ref name="loginInterceptor" />