Я сейчас нахожусь в процессе изучения Struts 2, и в настоящее время я создаю простое приложение, в котором непроверенные пользователи перенаправляются в форму входа.
У меня есть форма входа и функционал действия, который принимает учетные данные пользователей, проверяет их и сохраняет объект User в сеансе, однако сейчас я пытаюсь запретить доступ к страницам до входа в систему, и я пытаюсь сделать это с перехватчиком.
Моя проблема в том, что я написал перехватчик, который проверяет, был ли объект 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();
}
}