Запомнить меня в шве 3 - PullRequest
       23

Запомнить меня в шве 3

1 голос
/ 31 августа 2011

Как я могу использовать функцию "Запомнить меня" безопасности шва 3 ???

Я пытаюсь шов 2 пути, но он не работает ... здесь мои компоненты.xml ... не уверен, если этот файл используется в шов 3

   <security:jpa-token-store token-class="org.jboss.seam.example.seamspace.AuthenticationToken" />
<security:remember-me mode="autoLogin"/>
 <event type="org.jboss.seam.security.notLoggedIn">

<action execute="#{redirect.captureCurrentView}"/>

<action execute="#{identity.tryLogin()}"/>

<action execute="#{redirect.returnToCapturedView}"/>

Спасибо

Ответы [ 2 ]

1 голос
/ 05 августа 2012

Согласно https://community.jboss.org/thread/178998 RemeberMe не является интегрированным seam-security-3.1, но класс уже подготовлен .

Известный RememberMe из Seam2 доступен в двух режимах:

  • Первый режим позволяет сохранять имя пользователя в браузере пользователя в виде файла cookie и оставляет ввод пароля до браузера (многие современные браузеры способны запоминать пароли).

  • Второй режим поддерживает сохранение уникального токена в cookie-файле и позволяет пользователю автоматически проходить аутентификацию по возвращении на сайт без необходимости ввода пароля.

К счастью, не сложно реализовать обходной путь для первого режима. После успешного входа вы можете установить cookie:

FacesContext.getCurrentInstance().addResponseCookie("cookieName", "myToken", null);

Затем убедитесь, что ваш собственный CookieBean вызывается до входа в систему

<ui:fragment rendered="#{cookieBean.dummy}"/>
<h:form id="fLogin">
  <h:inputText value="#{credentials.username}"/>
  <h:inputSecret value="#{credentials.password}" redisplay="true"/>
  <h:commandButton value="LOGIN" action="#{identity.login}"/>
</h:form>

В вашем CookieBean вы можете проверить, доступен ли ваш файл cookie, сопоставить предоставленный токен с именем пользователя, а затем заполнить имя пользователя в вашей форме.

@Named @SessionScoped
public class CookieBean implements Serializable
{
  @Inject Credentials credentials;

  @PostConstruct
  public void init()
  { 
    Map<String, Object> cookies = FacesContext.getCurrentInstance().
                        getExternalContext().getRequestCookieMap();
    // Check if you cookie is available
    // Do some stuff with your cookie
    // Cookie cookie = (Cookie) cookies.get("cookieName");
    credentials.setUsername("myUserName");
  }

  public boolean getDummy() {return false;}
}
0 голосов
/ 01 сентября 2011

Seam 3 не использует component.xml для настройки компонентов / компонентов.

Я не думаю, что Seam Security 3 (по состоянию на 3.0.0.Final) имеет встроенную функцию «RememberMe»..

...