Я выполняю перенаправления URL между мобильными страницами простых лиц (pm: page).Например, от login.jsf
до /secure/myPage.jsf
, оба вечера: страницы.После успешной аутентификации пользователь должен быть перенаправлен на myPage.jsf
.Логин запускается так:
<pm:commandButton value="login" update="messages"
actionListener="#{loginbean.doLogin}" >
<f:param name="targetUrlParam" value="defaultTarget" />
</pm:commandButton>
и перенаправление внутри метода:
public void doLogin(ActionEvent e) throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext ec = context.getExternalContext();
try {
HttpServletRequest req = (HttpServletRequest) ec.getRequest();
Authentication authentication = SecurityContextHolder.
getContext().getAuthentication();
... // Authentication stuff with Spring Security
try {
HttpSession session = req.getSession(false);
String cp = ec.getRequestContextPath();
String redirectUrl = cp;
... //performing some filtering depending on Roles and target-urls
}
String encodedURL = ec.encodeResourceURL(redirectUrl);
((HttpServletResponse) ec.getResponse()).sendRedirect(encodedURL);
} catch (AuthenticationException ae) {
UtilBean.addErrorMessage("bad_credential");
}
К сожалению, перенаправление не происходит!Это может быть связано с жизненным циклом Primeface Mobile 3.0M3, потому что все нормально работает с обычными страницами JSF.
Есть предложения?Спасибо