Я протестировал контейнеры безопасности по умолчанию в Glassfish 3.0.1 и пришел к выводу, что больше не буду тратить на это время. Вместо этого я хочу сам контролировать проверку. Но мне нужно руководство, чтобы я встал на правильный путь.
На данный момент у меня есть UserBean, который имеет функцию входа / выхода (см. Ниже). И я не хочу использовать встроенный контейнер * j_security_check *, но использую ядро JSF 2.0.
Мои вопросы:
Благодарю за любую помощь или ссылку на пример, привет Крис.
PS. Извините за объединение двух вопросов в кластер
@ManagedBean
@SessionScoped
public class UserBean {
private AuthenticateUser authenticateUser;
...
public String login() {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
JsfUtil.log("Username : " +authenticateUser.getUserName());
JsfUtil.log("Password : " +authenticateUser.getPassword());
AuthenticateUser authRequest = authenticationFacade.find(authenticateUser);
try {
if(!authRequest.equals(authenticateUser))
return "/loginError";
request.login(authenticateUser.getUserName(), authenticateUser.getPassword());
return "";
} catch(ServletException e){
JsfUtil.addErrorMessage(e, "Incorrect username or password, please try again.");
return "/loginError";
}
...
public String logOut() {
String result = "/index?faces-redirect=true";
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
try {
request.logout();
} catch (ServletException e) {
JsfUtil.log("Failed to logout user!" +e.getRootCause().toString());
result = "/loginError?faces-redirect=true";
}
return result;
}