0

広告の詳細に切り替えるボタンがあります。ただし、広告ユーザーの詳細を表示するには、ログに記録する必要があります。したがって、pages.xml で、ログイン ページへのリダイレクトを定義しました。

<rule if="#{!identity.loggedIn}">
  <redirect view-id="/login.xhtml" />
</rule>

ログイン後にユーザーを広告の詳細にリダイレクトする方法がわかりません。

ユーザーがログに記録されていない場合、ユーザーは ".../app/advert/3" から ".../app/user" に切り替えられます。また、ユーザーを広告の詳細にリダイレクトする方法がわかりません。広告 ID に関する情報が失われています。私はpages.xmlでparamを定義しようとしました:

<page login-required="false" view-id="/advert/*">
  <rewrite pattern="/advert/{advertId}" />
  <param name="advertId" value="#{contextUser.setadvertId(advertId)}" />...

しかし、advertId は設定されていません。何か案が?

4

2 に答える 2

0

<rule if="#{!identity.loggedIn}">ファイルから を削除しpages.xmlます。あなたがする必要があるのは、login-required="true"代わりに広告ページをマークするだけです:

 <page login-required="true" view-id="/advert/*">
   <rewrite pattern="/advert/{advertId}" />
   <param name="advertId" value="#{contextUser.setadvertId(advertId)}" />...

ページが としてマークlogin-required="true"され、認証されていないユーザーによってアクセスされると、Seam は自動的にorg.jboss.seam.security.notLoggedInイベントを発行し、 で定義されたビューにリダイレクトしlogin-view-idます。定義したイベント リスナーは、このイベントをインターセプトし、現在のビューとパラメーターを保存します。

認証が正常に完了すると、Seam は を発行しorg.jboss.seam.security.loginSuccessfulます。これは再びインターセプトされ、以前に保存されたビューにリダイレクトすることによって処理されます。ビューが保存されていない場合 (つまり、ユーザーが直接ログイン ページに移動したため、notLoggedInイベントが発生しなかった場合)、ログイン アクションの通常のナビゲーション ルールが実行されます (ユーザーは/user.xhtml.

または、ナビゲーション ルールで手動でイベントを発行する必要がありますが、ナビゲーション ルールはアクションが発生notLoggedInた後にのみ評価されることに注意してください。そのため、ページ記述子に要素を追加してルールの評価をトリガーする必要があります。これ:<action/>

 <page login-required="false" view-id="/advert/*">
   <action execute="#{...}" /> <!-- execute any action to trigger rule evaluation -->
   <navigation>
     <rule if="#{not identity.loggedIn}">
       <!-- raise the event to trigger the capture of the current view -->
       <raise-event type="org.jboss.seam.security.notLoggedIn" />
       <redirect view-id="/login.xhtml" />
     </rule>
   </navigation>
   <rewrite pattern="/advert/{advertId}" />
   <param name="advertId" value="#{contextUser.setadvertId(advertId)}" />...
于 2013-10-17T13:56:34.193 に答える
0

これが最も簡単な方法です。

http://docs.jboss.org/seam/2.3.1.Final/reference/html/security.html#d0e8902

于 2013-10-14T19:34:28.300 に答える