Программный контроль входа в систему с помощью Servlet 3.0

Я протестировал контейнеры безопасности по умолчанию в Glassfish 3.0.1 и пришел к выводу, что больше не буду тратить на это время. Вместо этого я хочу сам контролировать проверку. Но мне нужно руководство, чтобы я встал на правильный путь.

На данный момент у меня есть UserBean, который имеет функцию входа / выхода (см. Ниже). И я не хочу использовать встроенный контейнер * j_security_check *, но использую ядро ​​JSF 2.0.

Мои вопросы:

  1. Нужен ли мне ServletFilter для перенаправления трафика, если пользователь не вошел в систему (при доступе к определенным папкам)?
  2. Как мне сохранить User Pricipals после того, как пользователь успешно вошел в систему?

Благодарю за любую помощь или ссылку на пример, привет Крис.

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;
    }
6
задан Chris 31 May 2011 в 14:58
поделиться