Вход в JSF HTTP сессию

Я пытаюсь создать форму входа в веб-приложение. на странице JSP я могу использовать

<%
   String name = request.getParameter( "username" );
   session.setAttribute( "theName", name );
%>

но теперь я использую JSF / Facelets для веб-приложения. Я не знаю, как создать сеанс в компоненте JSF Backing для клиента и проверить, вошел ли пользователь в систему или нет, поэтому он будет перенаправлен на страницу входа. Кто может помочь мне дать ссылку на учебник по этой проблеме? спасибо, прежде чем

Теперь у меня есть небольшая проблема с отображением в коде web.xml, отсекаемом от класса Filter.

@Override
public void init(FilterConfig filterConfig) throws ServletException {
    this.config = filterConfig;
}

@Override
public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {
    HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse res = (HttpServletResponse) response;
    LoginController controller = (LoginController) req.getSession()
            .getAttribute("loginController");
    if (controller == null || !controller.isLoggedIn()) {
        res.sendRedirect("../admin/login.xhtml");
    } else {
        chain.doFilter(request, response);
    }
}

И вweb.xml Я сопоставляю с<fitler> тег

<filter>
    <filter-name>userLoginFilter</filter-name>
    <filter-class>com.mcgraw.controller.UserLoginFilter</filter-class>
    <init-param>
        <param-name>loginPage</param-name>
        <param-value>/login.xhtml</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>userLoginFilter</filter-name>
    <url-pattern>/admin/*</url-pattern>
</filter-mapping>

У меня есть одна папка admin в веб-проекте, и я проверяю, не вошел ли пользователь с правами администратора, чтобы не заходить на страницу (я могу выполнить проверку разрешений), но когда я использую фильтр, браузер не понимает URL-адрес ?? не показывать StackTrace, когда браузер не понимает URL

Ошибка отображается в Firefox

The page isn't redirecting properly

на IE это загрузка ... загрузка. .. без остановки

теперь я изменяю условие, которое проверяет, если req.getPathInfo.startsWith ("/ login.xhtml") будет делать цепочку

У меня есть 2 идеи, но это ответ 500 HTTP STATUS

 if (controller == null || !controller.isLoggedIn()) {
     res.sendRedirect("../admin/login.xhtml");
     if(req.getPathInfo().startsWith("/login.xhtml")){
     chain.doFilter(request, response);
}

} else {
     chain.doFilter(request, response);
}

===============

if (controller == null || !controller.isLoggedIn()) {
    if (!req.getPathInfo().startsWith("/login.xhtml")) {
        res.sendRedirect("../admin/login.xhtml");
    } else {
        chain.doFilter(request, response);
    }
} else {
    chain.doFilter(request, response);
}

====================== Обновление класса loginController

package com.mcgraw.controller;

import com.DAO.UserBean;
import com.entity.IUser;
import java.io.Serializable;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 * @author Kency
 */
@ManagedBean
@SessionScoped
public class LoginController implements Serializable {

    @EJB
    private UserBean userBean;
    private IUser user;
    private boolean admin;
    private boolean mod;
    private PasswordService md5;

    /** Creates a new instance of LoginController */
    public LoginController() {
        user = new IUser();
        md5 = new PasswordService();
    }

    // getter / setter
    public boolean isMod() {
        return mod;
    }

    public void setMod(boolean mod) {
        this.mod = mod;
    }

    public IUser getUser() {
        return user;
    }

    public void setUser(IUser user) {
        this.user = user;
    }

    public boolean isAdmin() {
        return admin;
    }

    public void setAdmin(boolean admin) {
        this.admin = admin;
    }

    public String cplogin() {
        String md5Password = md5.md5Password(user.getPassword());
        if (userBean.userLogin(user.getUsername(), md5Password) != null) {
            if (user.getUsername() != null || md5Password != null) {
                user = userBean.userLogin(user.getUsername(), md5Password);
                if (user.getGroups().getAdmin() != null) {
                    setAdmin(user.getGroups().getAdmin());
                }
                if (user.getGroups().getMods() != null) {
                    setMod(user.getGroups().getMods());
                }
                if (isAdmin() == true || isMod() == true) {
                    return "home";
                } else {
                    return "login";
                }
            } else {
                return "login";
            }
        } else {
            return "login";
        }
    }

    public String logout() {
        user = null;
        return "login";
    }

    public boolean isLoggedIn() {
        return user != null;
    }
}

У меня новая проблема, если визуализировать JSF taglib с помощью метода loggedIn, на индексной странице (не в папке администратора) пользователь не авторизуется, может видеть то, что я представляю, <== это похоже на то, что если пользователь не авторизуется, пользователь не может видеть, но почему он это видит?

Ответы на вопрос(2)

Ваш ответ на вопрос