gihyo.jp » DEVELOPER STAGE » 特集 » ついに出た!最新Perlフレームワーク「Ark」徹底解剖 » 第4回 Ark チュートリアル:応用編(その2)

ついに出た!最新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::Cookiecookieにセッション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>

これでログイン処理は完成です。

著者プロフィール

村瀬大輔(むらせだいすけ,ハンドルネーム:typester)

1981年2月生まれ。2004年9月株式会社カヤックに入社。

カヤックでは自社サービス「こえ部」を担当する傍ら,ラボチームBM11に所属し「Ark」「nim」といったオープンソースプロダクトを開発。また「Shibuya.pm」や「YAPC::Asia」にスピーカーとして参加するなど,Perlプログラマとして活躍の場を広げている。

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

Ruby Freaks Lounge

Rubyに関わる,執筆者自身の旬なテーマを扱った,リレー形式の連載です。

これでできる! クロスブラウザJavaScript入門

JavaScriptはウェブ制作において避けては通れない重要な言語ですが,JavaScriptに苦手意識を持たれている方は少なくないようです。 その最大の原因がクロスブラウザ対応という課題であり,本連載ではクロスブラウザ対応のテクニックを詳細に解説します。

ビジネスで成功するためのシステム運用管理のポイント

システムの多様化,技術進歩に伴い,ITシステムの運用管理の必要性が年々高まっています。本連載では,システムの運用管理とは何かについて,現場のニーズと具体的な指針を押さえながらを解説します。

2010年版SEO体得講座

本連載では,いまや企業サイトの戦略の1つとして欠かすことのできないSEOについて,最新トレンドからすぐに使えるTipsまでを紹介します。

小型Linuxサーバの最高峰 OpenBlockS 600活用指南

搭載メモリの増加,CPUクロックの向上など,あらゆる面が強化された期待の新モデルOpenBlockS 600。この記事ではOpenBlockS 600の紹介から,活用するためのさまざまなノウハウを紹介していきます。

はじめMath! Javaでコンピュータ数学

プログラミング言語入門者向けに,知っていると役立つ数学的トピックスを紹介します。簡単な演習問題と解説で,即活用できる知識を目指します。

教科書には載っていない ネットワークエンジニアの実践技術

ネットワークエンジニア,インフラエンジニアのトラブル対応には,時には「教科書通りにいかない」テクニックが必要となります。資格試験では得られないこうした実践的な技術について,実例を元に紹介します。

Googleケータイ,世に現る

2008年9月,Googleが中心となって開発されている「Android」を採用した携帯電話「T-Mobile G1」が発表されました。本連載ではT-Mobile G1を中心にGoogleケータイに迫ります。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス

最近のコメント