2010-12-16 9 views
0

Seamアプリケーションを開発しています。新しく作成されたユーザーには特別なシナリオがあります。ユーザーアカウントがadminによって作成されると、彼は最初のログイン時にパスワードを変更する必要がありますので、ユーザーにパスワードを変更させる必要があります。私は彼の最初のログインかどうかを制御する必要があるすべてのページで、私は彼がパスワードページを変更するにリダイレクトする必要があります最初のログインです。Seam Frameworkでページを読み込んだときに別のページをリダイレクトする

Seam Frameworkでこの問題を実装することはできませんでした。

これについてお考えですか?

答えて

0

&フィルタを実装して、新しく作成されたユーザを確認してから、&を適切にリダイレクトできます。必要に応じてリクエストをフィルタリングするためのカスタムURLパターンを提供します。

<filter> 
    <filter-name>Seam Filter</filter-name> 
    <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>Seam Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+1

これは実際には良いアプローチではありません。このフィルタは、すべてのユーザのすべての要求に対して常に適用されます。 –

4

私には2つの提案があります。最初の1つ、

初めてログインしたユーザを返すメソッドをBeanに作成します。次に、あなたのpages.xmlで、

<page view-id="*"> 
. 
. 

     <navigation from-action="#{identityBean.isFirstLogin()}"> 
      <rule if-outcome="true"> 
       <redirect view-id="/changePasswordPage.xhtml"/> 
      </rule> 
     </navigation> 
    </page> 

2つ目は、 'org.jboss.seam.security.loginSuccessful' イベントを使用することです。

@Observer("org.jboss.seam.security.loginSuccessful") 
public void redirectUserToChangePassword() { 

    if (isFirstLogin()) { 

      Redirect redirect = Redirect.instance(); 
      redirect.setViewId("/changePassword.xhtml"); 
      redirect.execute(); 

    } 
} 

ただし、シームセキュリティを使用している場合はこの方法を使用できます。

+0

+1 Observerのアプローチの場合 –

+0

最初はうまく見えますが、それはすべてのリクエストで実行されます。 – firstthumb

+0

はい、そうです。オブザーバーアプローチについては、 –

関連する問題