Seam Authenticator.authenticate if-outcome

Maybe you are wondering why the following navigation rule in your pages.xml does not work, although your authenticate() method returns „true“ for successful login:

<page view-id="/login.xhtml">
  <navigation>
    <rule if-outcome="true">
      <redirect view-id="/anotherpage.xhtml" />
    </rule>
  </navigation>
</page>

If you are using Seam’s Identity.login() method…

<h:commandButton action="#{identity.login}"/>

…your authenticate() is called/wrapped by Identity.login(). Thus the return value „true“ is swallowed by Identity.login() which in turn terminates with the outcome „loggedIn“ and not „true“! So the following code should do the trick:

<page view-id="/login.xhtml">
  <navigation>
    <rule if-outcome="loggedIn">
      <redirect view-id="/anotherpage.xhtml" />
    </rule>
  </navigation>
</page>
Dieser Beitrag wurde unter IT abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.