Как проверить, вошел ли пользователь в систему? - PullRequest
5 голосов
/ 04 декабря 2011

Я хочу отобразить ссылку для входа в систему, когда пользователь не вошел в систему, и ссылку для выхода из системы, когда пользователь вошел в систему. Я использую управляемую контейнером безопасность, как определено в web.xml.

Какя могу достичь этого?

Ответы [ 3 ]

17 голосов
/ 04 декабря 2011

Имя пользователя, вошедшего в систему, доступно по номеру ExternalContext#getRemoteUser(), который делегируется под обложками HttpServletRequest#getRemoteUser(). Оба доступны в EL на #{facesContext.externalContext.remoteUser} и #{request.remoteUser} соответственно. Если это null, то это означает, что пользователь не вошел в систему.

Итак, по вашему мнению, вы можете проверить это в атрибуте rendered следующим образом:

<h:form rendered="#{not empty request.remoteUser}">
    <h:commandLink value="Logout" action="#{auth.logout}" />
</h:form>
<h:link value="Login" outcome="login" rendered="#{empty request.remoteUser}" />

Смотри также:

1 голос
/ 04 декабря 2011

Это зависит от вашего определения "вошли в систему".Обычно вы можете войти в систему в своем приложении, внедрив собственный механизм входа в систему.В противном случае вы используете какой-то зависимый от контейнера механизм, о котором позаботится ваш сервер.

Для метода, управляемого контейнером, вы обычно можете проверить FacesContext с его ExternalContext .

FacesContext.getExternalContext().getRemoteUser();

Вы можете поместить этот метод в вспомогательный компонент и проверить его с помощью атрибута rendered вашего компонента ссылки.

Если вы реализуете свою собственную систему, она полностью зависит от вас.

0 голосов
/ 04 декабря 2011

Вы можете проверить сеанс, чтобы узнать, вошел ли он в систему или нет (если вы используете сеанс для управления информацией для входа).Предполагая, что вы сохранили информацию о пользователе с помощью клавиши user, вот пример:

<%
    String page = "login.jsp";
    String linkName = "Login";

    if (session.getAttribute("user") != null) {
        page = "logout.jsp";
        linkName = "Logout";
    }
%>

<a href="<%=page %>"><%=linkName %></a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...