12

私はJavaEE6を学ぼうとしていますが、JavaEE6に認証メカニズムを実装する方法を考えています。

JavaEE6認証の例を次に示します。

    public void login() {
    if (account.authenticate(name, password) == null) {
        message = "Invalid user name or password!";
    } else {
        message = " Login successful";
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
        try {
            request.login(this.name, this.password);
            Principal principal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
            name = principal.getName();
        } catch (ServletException e) {
            // Handle unknown username/password in request.login().
            context.addMessage(null, new FacesMessage("Unknown login"));
        }
    }
}

次の質問があります。

  1. request.login関数はどのように名前とパスワードをチェックしますか?ユーザーエンティティがわからないのですか?
  2. それが正しい方法ではない場合。標準認証メカニズムを実装する方法

最後にあなたのアドバイスに感謝します、そして私は非常に良いチュートリアルまたはアドバイスが必要です。

4

1 に答える 1

15

request.login機能は名前とパスワードをどのようにチェックしますか?ユーザーエンティティがわからないのですか?

request.login、プログラムによるセキュリティを実装し、ServletContext用に構成されたWebコンテナログインメカニズムによって使用されるパスワード検証レルムで提供されたユーザー名とパスワードを検証することを可能にします。

つまり、認証チェックをコンテナに委任し、このチェックはWebアプリケーションのセキュリティレルムに対して実行されます。これは、FORMベースの認証に代わる非常に優れた方法です。

フォームなしの認証 は、この機能の動作を示す優れたスクリーンキャストがあります。ファイルレルムではなくJDBCレルムを使用する場合は、このブログ投稿を確認してください。

も参照してください

于 2010-06-04T17:59:46.550 に答える