Rain技術情報などを不定期で投稿していきます。Framework前回は、ログイン処理の前提となるユーザー登録画面を実装しました。今回は、PlayFramework2.5で、簡易的なユーザー登録画面を実装します。19:06今回は、いよいよログイン処理を実装していきます。まとめログイン処理の実装ログイン画面/app/views/login.scala.htmlまず、ログイン画面のHTMLを記述します。null){<p>@flash.get("message")</p>}ここでは、ユーザー登録画面の時と違い、フォームヘルパーを利用していない点に注意してください。コントローラー側で受け取る値を設定するフォームは、必ずしもフォームヘルパーを利用する必要はありません。後ほど説明しますが、nameの値さえ規約に沿っていれば、Controller側でバインドすることができます。/app/controllers/LoginController次に、ログインのためのControllerを記述します。}}Playではおなじみの、ログイン画面描画用のメソッドを定義します。/conf/routesroutesに以下を追記します。controllers.LoginController.loginここまでで、ログイン画面へアクセスすることができるようになりました。肝心の認証処理がまだです。認証処理/app/dto/LoginRequest.javaまずログインに使うDTOを定義します。password;}現段階では不要なように思えますが、たとえばログイン認証を強化したくなったときに、引数を追加するのではなく、DTOの記述を変えればそれで済む、ということが大きなメリットとなります。/app/services/Authenticator続いて、認証処理の実装です。}}userNameとpasswordが一致したレコードがあれば、それを返すようにしています。今回は平文で認証を行っていますが、実際の開発では、パスワードは暗号化したものを登録するようにしてください。ログイン処理/app/controllers/LoginControllerControllerに以下を追記します。}新たに、doLogin、logoutを実装しました。}Authenticatorのloginメソッドでuserインスタンスが獲得できなかったら、ログイン失敗とみなしてflashにメッセージを書き込み、ログインページに戻しています。獲得できていれば、内容をセッションに書き込んでindexに戻します。ここで、FormクラスのbindFromRequestメソッドが使用できます。値のバインドには、必ずしもフォームヘルパを使わなくても良い、ということにご注意ください。名前の規則さえ合っていれば、POSTされたフォームの値から手動で値を取り出す必要はありません。これは、javascriptなどでフォームを動的に生成するようなシチュエーションで、フォームヘルパを使わない実装にせざるを得ないときなどに利用できます。フォームヘルパはPlayFrameworkの中でも特殊な部類にはいりますから、ウェブデザイナーなどのPlayFrameworkに明るくない方と連携するのに障壁となる可能性があります。}セッション書き込みの部分です。セッションクッキーに平文で保存されるので、パスワードや個人情報などのセンシティブなものは保存しないほうが良いでしょう。続いて、ログアウト処理です。}セッションをクリアしてindexに戻しているだけです。controllers.LoginController.doLoginroutesも忘れずに定義しましょう。専用コンテンツの作成/app/views/main.scala.htmlあとは、セッションに入っている値を取得すればよいわけです。今回の例では、セッションのidに値が入っていれば認証が完了しているということがわかります。「会員なら、ナビゲーションに会員メニューを表示させる」というような使い方であれば、テンプレートを編集するだけで実現できます。<p>会員専用情報<p>}これは、当然ですがサーバー側で処理されるので、ソースコードを見てもデータはありません。ベーシック認証と違い、「専用ページ」を作成することなく、安全に情報を提供することができます。まとめここまで、PlayFrameworkを使ってデータベースの操作や、取得、セッションへの登録、削除、それらを応用した会員専用コンテンツの提供ができるようになりました。今回解説したことは、PlayFrameworkの基礎の基礎であり、また、これがウェブ開発の全てでもあります。あとは独自のアイデアと組み合わせ、サービスを構築していくだけです。実際に開発する際は、パスワードの暗号化やSSL通信、XSS対策などのセキュリティ検証をしっかり行い、充分注意して開発を行ってください。Frameworkでは、EbeanというORMライブラリが利用できます。2.5】@Authenticatedでアクセスを制御する前回までで、DBへの書き込みや検索、認証などを解説してきました。今回は、PlayFramework2.5で、簡易的なユーザー登録画面を実装します。2.5】Ebeanでフィールドを継承する方法EbeanORMは、クラスにフィールドを定義すれば自動的にテーブルを作成したり書き換えてくれたりする便利なものです。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。