Я сталкиваюсь с очень запутанным фактом: у нас есть военный модуль в приложении Java EE с корневым контекстом "foo". Доступ ограничен через
<login-config>
<auth-method>FORM</auth-method>
<realm-name>fooRealm</realm-name>
<form-login-config>
<form-login-page>/login</form-login-page>
<form-error-page>/loginerror</form-error-page>
</form-login-config>
</login-config>
Защищенный ресурс определяется следующим образом
<security-constraint>
<web-resource-collection>
<web-resource-name>Foo-App</web-resource-name>
<url-pattern>/bar/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>foo-role</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>INTEGRAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Страницы входа и ошибки входа монтируются с использованием Wicket 7:
mountPage("login", LoginWebPage.class);
mountPage("loginerror", LoginErrorWebPage.class);
Я перехожу на https://localhost:7002/foo/bar, а сервер приложений (WebLogic 12.1.3) перенаправляет на https://localhost:7002/foo/login (как и ожидалось). Login-WebPage - это простая веб-страница со следующим html
<form method="POST" action="j_security_check">
<input name="j_username" type="text" />
<input name="j_password" type="password"/>
<input type="submit" value="Login"></input>
</form>
Файл WebPage.java в wicket - это простая веб-страница без каких-либо виджетов калитки. Единственное здесь, что некоторые ресурсы CSS включены в PackageResourceReferences:
public class LoginWebPage extends WebPage {
@Override
public void renderHead(IHeaderResponse response) {
response.render(CssHeaderItem.forReference(...));
}
}
Теперь я сталкиваюсь со следующей проблемой: если я введу действительные учетные данные на странице входа в систему, то я буду перенаправлен на защищенный ресурс / foo / bar. Различное поведение при вводе неверных учетных данных: тогда URL остается в / foo / j_security_check и сервер отвечает кодом состояния 404. Если я вручную перехожу к / foo / loginerror, то я вижу страницу ошибки входа. Я не могу понять, где ошибка.
Может кто-нибудь помочь?