私のアプリケーションは Struts2 を使用して開発されており、セッション属性に基づいてユーザーがログオンしているかどうかを検証するインターセプターがあります。ここで、セッションがタイムアウトになり、ユーザーが再度ログインを試みたとします。ログインが成功したら、再ログインしたユーザーを処理し、ユーザーを作業中の最後のページに戻すにはどうすればよいですか...たとえば、page3.jsp??
loginInterceptor は
public class LoginInterceptor extends AbstractInterceptor {
@Override
public String intercept(final ActionInvocation invocation) throws Exception {
Map<String, Object> session = ActionContext.getContext().getSession();
String userLoggedin = (String) session.get("userLoggedin ");
Object action = invocation.getAction();
// user is not logged in yet
if(userLoggedin == null){
// public pages that dont require login
if (action instanceof LoginNotRequired) {
return invocation.invoke();
}
// Pages that require the user to be logged in - user not logged in yet
if (!(action instanceof LoginAction)) {
return "loginRedirect";
}
}
// user is logged in
if (userLoggedin.equals("true")) {
return invocation.invoke();
}
return invocation.invoke();
}
}
struts.xml 定義
<interceptors>
<interceptor name="login" class="com.mypackage.LoginInterceptor">
</interceptor>
<interceptor-stack name="myStack">
<interceptor-ref name="login"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"></default-interceptor-ref>
<global-results>
<result name="loginRedirect" type="redirect">/index.jsp</result>
</global-results>