Автоматический вход в систему SEAM + JSF - PullRequest
1 голос
/ 03 августа 2009

Мое веб-приложение должно автоматически входить в систему, когда пользователь обращается к URL-адресу приложения:

пример:

http://myapp/home.xhtml?token={3bcdc006-05fc-4ce1-953a-17375edcf2a2}

on my pages.xml i have the following:
<pages xmlns="http://jboss.com/products/seam/pages"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.1.xsd"

       no-conversation-view-id="/home.xhtml"
       login-view-id="/login.xhtml">

Когда разговор не активен, по умолчанию используется home.xhtml. и когда пользователь достигает home.xhtml с параметром токена, я хочу, чтобы было вызвано действие, и войдите в систему пользователя.

любой учебник или пример для этого?

и если параметр не вызывается, я хочу вызвать исключение org.jboss.seam.security.AuthorizationException, чтобы пользователь перенаправился на error.xhtml

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 04 августа 2009

Прочтите параметры страницы в документации Шов .

В вашем файле pages.xml вы должны указать что-то вроде:

<pages>
      <page view-id="/home.xhtml" action="#{backingBean.checkToken}">
          <param name="token" value="#{backingBean.token}"/>
      </page>
</pages>

Это заполнит переменную token значением из URL и вызовет метод checkToken(). В вашем методе checkToken() вы можете проверить, вошел ли пользователь в систему, а если нет, то проверить, заполнен ли token, а если нет, вывести AuthorizationException

0 голосов
/ 04 августа 2009

Это похоже на вопрос

получить-запрос-сессия-параметры-и-атрибуты-из-JSF-страниц

Некоторые поиски в Google показывают, что вы можете получить доступ к параметрам запроса, используя контекст лица и встроенную карту param, в которой есть параметры запроса. Итак, я бы посоветовал вам иметь bean-компонент запроса, который загружается в home.xhtml, который проверяет FaceContext и вызывает исключение org.jboss.seam.security.AuthorizationException, чтобы JBOSS обрабатывал имя входа.

FacesContext ctx = FacesContext.getCurrentInstance();
String requestToken = ctx.getApplication().createValueBinding("#{param.token}").getValue(ctx);
...