0

jsf2、jboss 6.1、および seam 3 を使用するアプリがあります。次のようなことをしたいです。

ユーザーがアプリにアクセスしようとして認証されない場合は、ログイン ページに誘導する必要があります。ユーザーがログイン URL を入力しても既にログインしている場合は、ホーム ページにリダイレクトされ、再度ログインする必要はありません。だから私はこれをfaces-config.xmlに入れました

<navigation-rule>
    <navigation-rule>
    <from-view-id>/login.xhtml</from-view-id>
    <navigation-case>
        <if>#{identity.loggedIn}</if>
        <to-view-id>/user/search.xhtml</to-view-id>
        <redirect>
            <view-param>
                <name>cid</name>
                <value>#{userBean.conversation.id}</value>
            </view-param>
        </redirect>
    </navigation-case>
</navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
        <from-action>#{identity.login}</from-action>
        <if>#{identity.loggedIn}</if>
        <to-view-id>/user/search.xhtml</to-view-id>
        <redirect>
            <view-param>
                <name>cid</name>
                <value>#{userBean.conversation.id}</value>
            </view-param>
        </redirect>
    </navigation-case>
    <navigation-case>
        <from-action>#{identity.login}</from-action>
        <from-outcome>failed</from-outcome>
        <to-view-id>/denied.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-outcome>login</from-outcome>
        <to-view-id>/login.xhtml</to-view-id>
        <redirect />
    </navigation-case>
</navigation-rule>

しかし、最初のルールは機能しません。ユーザーが login.xhtml で URL を入力すると、ページにとどまります。彼をリダイレクトする必要があります。どうやってやるの?

ありがとう

ケリー

4

1 に答える 1

0

seam-faces モジュールを使用する必要があると思います。seam-security と統合されています。ドキュメントのこの部分を見てください。

私のプロジェクトでは、ナビゲーション ルールを使用せず、Pages 構成オブジェクトは次のようになります。

@ViewConfig
public interface Pages {
    static enum Configuration {
        @ViewPattern("/pages/*")
        @LoggedIn
        PRIVATE,

        @UrlMapping(pattern="/pages/home.xhtml")
        @ViewPattern("/login.xhtml")
        @FacesRedirect(false)
        LOGIN,

        @ViewPattern("/*")
        @FacesRedirect
        @LoginView("/login.xhtml")
        ALL;

    }

}

この他の質問も、あなたが必要とすることをするのに役立ちました。

于 2012-07-20T15:18:09.990 に答える