1

あなたがこれで私を助けることができることを願っています:私はj_security_checkで働いていて、この問題を抱えています

ログに記録されていないユーザーに制限する必要があるプロファイルページがあるので、web.xmlファイルにセキュリティ制約を追加し、アドレスバーでアクセスしようとすると正常に機能します。これにより、ログインページは完全に正常に表示されます。

今の問題は次のとおりです。私のインデックスページの例では:

http://localhost/mySite/index.xhtml

リンクがある

<h:commandLink action="user/Profile" />

これでプロフィールページにリダイレクトされますが、URLは同じです

http://localhost/mySite/index.xhtml

したがって、j_security_checkはURLで機能し、jsfは機能しないことを確認した限り、ログインページを表示しません。プロファイルページでex:myImagesへのリンクを押すと、URLに次のように表示されます。

例:http://localhost/mySite/user/Profile.xhtml

なぜこれが起こったのですか?これを修正する方法はありますか?前もって感謝します

私が使用している代替案は、

<a href="user/Profile.xhtml" >Profile</a>

これによりログインページが表示されますが、index.xhtmlにアクセスしてプロファイルを押すと、次の場所にリダイレクトされるため、ページが見つかりません。

例:http://localhost/mySite/user/user/Profile.xhtml

4

1 に答える 1

1
<h:commandLink action="user/Profile" />

Aはh:commandLink、現在のページに対してh:commandButtonHTTP POSTリクエストを(によってh:form)実行し、現在のページは指定されたリソースに転送します。

ページ間のナビゲーションにPOSTを使用する必要はありません。これは、ユーザーエクスペリエンスが悪いだけでなく(URLが変更されず、ブラウザーの履歴を前後に移動するときの直感的でない動作)、SEOに対応していません(検索ボットはPOSTのインデックスを作成しません)。

JSF風の機能がまったく必要ない場合はh:outputLink、単純な要素に置き換えるか、ご存知のとおり、単純な要素に置き換える必要があります。<a>

間違ったURL(パスが重複している)に転送されるという最後の問題について:これは、を使用すると解決されますh:outputLink。JSFは、現在のコンテキストパスを考慮に入れます。

于 2010-08-19T23:10:17.663 に答える