SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~本格的なRoRスタイルフレームワーク「Play!」(2)

第8回

管理者モードの追加

 このようにCRUDモジュールを利用すると、アクションメソッドもテンプレートも用意することなく、ただ空のクラスを作るだけでさまざまなモデルの基本操作を行うことができます。しかし、一般の利用者が勝手にアクセスできてしまうのは問題です。CRUDの機能は、やはり特定の人間だけがログインして使えるようにすべきです。こうした「ログイン管理」の機能も、Play!にはモジュールとして提供されています。これも実装してみましょう。

 まず、モジュールをロードするため、application.confに次の文を追記します。

module.secure=${play.path}/modules/secure

 これでログイン管理をする「Secure」モジュールがロードされるようになります。続いて、コントローラーを修正しましょう。Applicationクラスの前に、以下のアノテーションを追加してください。

@With(Secure.class)

 これでこのクラスはセキュアになります。試しに、indexにアクセスしてみましょう。画面にログインのための表示が現れるようになります。ここでログインしないとページは表示されません。Secureモジュールによってページが保護されるようになったのです。

アクセスするとログイン画面が現れ、ログインしないとページが表示されなくなる
アクセスするとログイン画面が現れ、ログインしないとページが表示されなくなる

 ただし、このままだと、実はどんなユーザー名とパスワードを入力しても常にログインできてしまいます。ユーザー名とパスワードをチェックするために、クラスを定義しておく必要があります。「controllers」内に、新たに「Security.java」というソースコードファイルを用意してください。そして次のように記述をしましょう。

package controllers;

class Security extends Secure.Security {
    
    static boolean authentify(String username, String password) {
        return "admin".equals(username) & "play".equals(password);
    }    
    
}

 ここでは、extends Secure.Securityとしてクラスを定義しています。これにより、このSecurityクラスはSecureモジュールでのセキュリティ管理を行うクラスとして機能するようになります。

 ここでは「authentify」というメソッドが1つだけ定義されています。これが、ログイン画面よりユーザー名とパスワードを入力された際、それらをチェックしてログインを許可するかどうかを決めるメソッドです。引数には、入力したユーザー名とパスワードが渡されます。これらをもとにチェックをし、trueを返せばログインされ、falseならばログインを拒否するようになります。ここでは一例として、ユーザー名を"admin"、パスワードを"play"とし、それ以外ではログインできないようにしました。実際にログインできるか確かめてみましょう。

 なお、一度ログインすると、簡易サーバを終了して以後もしばらくログイン状態は保持されます。強制的にログアウトする場合は、http://localhost:9000/secure/loginにアクセスしてください。これで自動的にログアウトし、再びログイン画面に戻ることができます。

まとめ

 今回は、Webアプリケーション開発でもっとも重要な要素である、データベース関係の基本について説明しました。Play!のモデルは、ある程度の機能がメソッドとして用意されてはいますが、細かな検索になるとクエリーを書くことになります。このあたりは、現在、RubyやPHPなどのフレームワークに比べるとまだ弱い感があります。しかし、Javaの世界で使われてきたものに比べれば、十分使いやすいのは確かです。

 モジュールによる拡張は、目から鱗が落ちるほどに強力です。CRUDとセキュリティ関係は、自分で実装するとなるとなかなか面倒くさいもので、それをシンプルなアノテーションを書くだけで、まったくコーディングすることなく実装できるのは、Play!の大きな強みといってよいでしょう。またログインを必要とするアプリケーションの開発や、管理者モードを必要とする場合も、Secureを使い認証のためのクラスを1つ定義するだけです。「フレームワークを使えばこれだけ効率的に開発できる」という非常に具体的な1つの回答がここにあります。

 今回、紹介した機能だけでも、比較的シンプルなWebアプリであれば十分に作れるようになります。まずは自分で簡単なアプリ作りに挑戦してみてください。Play!を使うことでいかに簡単に開発ができるかよく分かるでしょう。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4751 2010/01/28 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー