ついに出た!最新Perlフレームワーク「Ark」徹底解剖
第4回 Ark チュートリアル:応用編(その2)
前回に引き続き,サンプルアプリケーションとしては掲示板を開発しながら,Arkの利用方法について紹介します。
掲示板の概要
今回作成するアプリケーションは,OpenID認証を使用したシンプルな掲示板アプリケーションです。
ここまでのおさらい
前回,依存モジュールの準備,モデルの作成,テンプレートの利用など,基礎部分の開発を行いました。今回は,その続きを行っていきます。
アプリケーションの作成(続き)
ログイン処理
次にログイン処理を作っていきましょう。今回はOpenIDを使用したログイン処理を実装します。
Arkではログイン処理などはプラグインとして用意されています。今回は認証プラグインとセッションプラグインを使用してログイン処理を作成します。
プラグインを使うにはアプリケーションクラス(MiniBBS.pm)でその使用を宣言します。具体的には以下のようにします。
use_plugins qw{
Session
Session::State::Cookie
Session::Store::Memory
Authentication
Authentication::Credential::OpenID
Authentication::Store::Null
};
これでセッションと認証のプラグインをロードできます。ロードしたプラグインを見てみましょう。
まずセッションプラグインは,セッションIDを保存するためのStateと,セッションデータを保存するためのStoreの組み合わせを指定する必要があります。今回のコードでは
| Session | セッションプラグイン |
|---|---|
| Session::State::Cookie | cookieにセッションIDを登録する |
| Session::Store::Memory | メモリにセッションデータを持つ |
を使用します。たとえば,Cookieの代わりにURLにセッションIDを埋め込みたいときはState::Cookieの代わりにState::URIを使用したり,データをmemcachedなどに保存したり,その他Cacheインターフェースを使用してデータを保存したい場合はStore::Modelを使用したりということができます。
認証プラグインもセッションと同様に,認証方法を指定するCredentialとユーザ情報を保存するStoreというプラグインを組み合わせて使用します。
今回はOpenID認証を使用しているため,ユーザ情報は外部のサービスが持っていますのでCredentialのみの指定で使用します。そのような場合はStore::Nullというプラグインを使用します。
もちろん,OpenID認証を使用していてもユーザ情報をアプリケーションで拡張するために自前のStoreと組み合わせることも可能です。ですが,今回はOpenID認証でログイン処理を使うだけなので省略します。
プラグインの準備ができましたので,次はログイン・ログアウトを処理するコントローラを書きます。Loginというコントローラ名にしましょう。
$ ark.pl controller Login
というコマンドでひな形を生成します。
URL的には/loginでログイン,/logoutでログアウトとなるようにコントローラを書くと以下のようになります。
sub login :Path :Args(0) {
my ($self, $c) = @_;
if (my $user = $c->authenticate) {
# login 成功
$c->redirect( $c->uri_for('/') );
}
}
sub logout :Global {
my ($self, $c) = @_;
$c->logout;
$c->redirect( $c->uri_for('/') );
}
また,ログインフォームのテンプレートをroot/login/login.mtとして置いておきます。
<p>OpenID でログイン</p>
<form method="get">
<p>
<label for="openid_identifier">OpenID URI:</label>
<input type="text" id="openid_identifier" name="openid_identifier" />
</p>
<p><input type="submit" value="login"/></p>
</form>
これでログイン処理は完成です。
ついに出た!最新Perlフレームワーク「Ark」徹底解剖
- 第4回 Ark チュートリアル:応用編(その2)
- 第3回 Ark チュートリアル:応用編(その1)
- 第2回 Ark チュートリアル:基礎編
- 第1回 Arkって何だ? ―Ark が生まれるまで


