私はこの質問の内容を実験してきました(保護されたリソースを必要としないJSF/Java EEログイン)。
1 つのパブリック ページ (/public.xhtml) と 1 つの保護されたページ (/protected/private.xhtml) を使用して、BASIC 認証を使用してサンプル アプリケーションをセットアップし、最初のページから 2 番目のページへのリンクがあるとします (図のように)。以下)、すべてが完全に機能します。
<h:commandButton value="Go Private" action="/protected/private?faces-redirect=true" />
ただし、を削除しlogin-config
て上記のボタンを次のように置き換えると:
<h:commandButton value="Go Private" action="#{mybean.login}" />
...そして #{mybean.login} は次のようになります...
public String login() {
HttpServletRequest request = ...
try {
request.login("known username", "known password");
} catch (Exception e) {
// handle unknown credentials
}
return "/protected/private?faces-redirect=true";
}
この場合、ログインは成功しますが ( の例外ではありませんrequest.login()
)、ブラウザに「禁止されているリソース」ページが表示されます。
2 つのシナリオの違いを明らかにできる人はいますか?