Я хочу, чтобы отображалась ссылка для входа, когда пользователь не вошел в систему и вышла из системы, когда пользователь вошел в систему. Я использую безопасность, управляемую контейнером, как определено в web.xml
.
Как я могу это достичь?
Я хочу, чтобы отображалась ссылка для входа, когда пользователь не вошел в систему и вышла из системы, когда пользователь вошел в систему. Я использую безопасность, управляемую контейнером, как определено в web.xml
.
Как я могу это достичь?
Имя пользователя вошедшего в систему пользователя доступно 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}" />
Это зависит от вашего определения "вход в систему". Обычно вы можете войти в систему в своем приложении, внедряя свой собственный механизм входа. В противном случае вы используете механизм, зависящий от контейнера, который ваш сервер позаботится.
Для управляемого контейнером метода вы обычно можете проверить FacesContext
на ExternalContext.
FacesContext.getExternalContext().getRemoteUser();
Вы можете поместить этот метод в помощник bean и проверить его с помощью атрибута rendered
вашего компонента ссылки.
Если вы внедрили свою собственную систему, это полностью зависит от вас.
Вы можете проверить сеанс, чтобы узнать, зарегистрирован ли он или нет (если вы используете сеанс для управления регистрационной информацией). Предполагая, что вы сохранили информацию пользователя с помощью ключа user
, вот пример:
<%
String page = "login.jsp";
String linkName = "Login";
if (session.getAttribute("user") != null) {
page = "logout.jsp";
linkName = "Logout";
}
%>
<a href="<%=page %>"><%=linkName %></a>