私は現在、Struts 2 を学習中です。現在、未確認のユーザーがログイン フォームにリダイレクトされる単純なアプリケーションを構築しています。
ユーザーの資格情報を取得し、それらを検証してユーザーオブジェクトをセッションに保存するログインフォームとアクション機能がありますが、ログインが行われる前にページへのアクセスを防止しようとしており、インターセプターを使用してこれを実行しようとしています.
私の問題は、 User オブジェクトがセッションに保存されているかどうかを確認するインターセプターを作成しましたが、保存されていない場合はログインページにリダイレクトしたいのですが、ストラットをバイパスしてを使用せずにこれを行う方法を見つけることができないことですHttpServletResponse.sendRedirect メソッド
構成:
<package name="mypackage" extends="struts-default" namespace="/admin">
<interceptors>
<interceptor name="login" class="my.LoginInterceptor" />
</interceptors>
<default-interceptor-ref name="login"/>
<action name="login" class="my.LoginAction">
<result name="input">/admin/login.jsp</result>
<result name="success" type="redirect">/admin</result>
</action>
<action name="private" class="my.PrivateAction">
<result>/admin/private.jsp</result>
</action>
</package>
インターセプター コード:
@Override
public String intercept(ActionInvocation inv) throws Exception {
Map<String, Object> session = inv.getInvocationContext().getSession();
Object user = session.get("user");
if(user == null) {
// redirect to the 'login' action here
}
else {
return inv.invoke();
}
}