0

私はJavaEEを初めて使用しますが、ログインシステムをどのように実装する必要があるのか​​よくわかりません。テーブルuserを持つmysqlデータベースがあり、それが列usernameとpasswordを取得したとしましょう。安全なログインシステムをどのように実装する必要がありますか?安全とは、パスワードを送信するときのハッシュパスワードやSSL接続などの基本的なWebセキュリティを意味します。

フォームベースのログインを見ていますが、組み込みのページj_security_checkによってデータベースからデータを取得する方法を理解できますか?どういうわけか接続文字列を定義する必要はありません。ハッシュとSSLを使用するためにどこで定義しますか?

私はTomcatv7.0を使用しています。

4

1 に答える 1

3

まず、パスワードをデータベースに保存しないでください。ハッシュを保存できます。

簡単な方法は次のとおりです。

  1. ユーザー名とパスワードのフィールドを持つフォームを追加します。
  2. サンプルユーザーとして呼び出されるセッションスコープのマネージドBeanを作成します。
  3. Beanにプロパティのユーザー名とパスワードを作成します(アクセサーを忘れないでください)。
  4. 作成したプロパティを使用してフォームをバインドします(JSF#{userBean.username}の例として)。
  5. 承認と呼ばれるBeanにメソッドを作成します。
  6. フォームの送信ボタンでメソッドをバインドします。
  7. authorizeメソッドでパスワードのハッシュを作成し、フォームからユーザー名とパスワードを含むユーザーテーブルの行を見つけようとします。
  8. 別のページへのリダイレクトが成功したら、パスワードフィールドをnullにし、ユーザー名フィールドを使用してログインしているユーザーを認識します。

これは、私が想像できるJavaEEで承認を実装する最も簡単な方法です。

次のようなフォームを入力してください。

<h:form id="loginForm">
    <h:inputText maxlength="255" size="20" tabindex="10" value="#{userBean.login}"
                    styleClass="inputField" id="username"/>
    <h:inputSecret maxlength="255" size="20" tabindex="20"
                     value="#{userBean.password}" styleClass="inputField" id="password"/>
    <h:commandButton value="login"
                                 action="#{userBean.validate}" id="submit"/>
</h:form>

そしてマネージドBean:

@ManagedBean(name = "userBean")
@SessionScoped
public class UserBean {
    private User user;
    private String login;
    private String password;

    @PostConstruct
    private void init() {
        this.user = new User();
    }

    public String validate() {
        // Validate given login and password here
        // When user seems to be valid assign it to this.user and return "/someFileForAuthorizedUsers.xhtml";
        this.login = null;
        this.password = null;

        return null;
    }
}

アクセサーを忘れないでください。JSFはそれらを必要としています。

于 2013-02-24T20:08:52.163 に答える