Как и ожидалось, страница входа в систему загружается при запросе защищенного / безопасного ресурса:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>jdbc</realm-name>
<form-login-config>
<form-login-page>/login.xhtml</form-login-page>
<form-error-page>/login.xhtml</form-error-page>
</form-login-config>
</login-config>
Насколько я понимаю, j_security_check
автоматически перенаправит на защищенный / безопасный ресурс, если аутентификация прошла успешно:
<form method="post" action="j_security_check">
<input type="text" name="j_username">
<input type="password" name= "j_password">
</form>
Однако я хотел бы разрешить пользователям регистрироваться (или войти) для продолжения, поэтому я использовал JSF 2.0: <h:form...
, EL: #{loginBean.register()}...
и т. Д. ... и я проверяю подлинностьпрограммно с Servlet 3.0:
public void register() {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
try {
// Register...
request.login(this.username, this.password);
// Redirect to the protected/secure resource...
} catch (ServletException e) {
...
}
}
Как узнать, что это за запрошенный первоначально ресурс? Возможно:
- Получить "сохраненный запрос" из сеанса (зависит от контейнера) ?
- Попробуйте как-нибудь получить доступ к «исходному запросу» (где) ?
- Все, что связано с диспетчером запросов (дикое предположение) ?
- Использовать заголовок "referer" (плохая идея) ?
- Создать модуль проверки подлинности сервера (SAM) (непросто) ?
Любой совет будет очень признателен!