まず、パスワードをデータベースに保存しないでください。ハッシュを保存できます。
簡単な方法は次のとおりです。
- ユーザー名とパスワードのフィールドを持つフォームを追加します。
- サンプルユーザーとして呼び出されるセッションスコープのマネージドBeanを作成します。
- Beanにプロパティのユーザー名とパスワードを作成します(アクセサーを忘れないでください)。
- 作成したプロパティを使用してフォームをバインドします(JSF#{userBean.username}の例として)。
- 承認と呼ばれるBeanにメソッドを作成します。
- フォームの送信ボタンでメソッドをバインドします。
- authorizeメソッドでパスワードのハッシュを作成し、フォームからユーザー名とパスワードを含むユーザーテーブルの行を見つけようとします。
- 別のページへのリダイレクトが成功したら、パスワードフィールドを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はそれらを必要としています。