内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
catalyst:auth
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Authentication and Authorization ====== Catalystで認証と認可の処理を行う。ユーザ情報はLDAP、データベース、.htpasswd等に格納できる。ここではハローワールド作成でDBICをモデルとして使ったので認証にもDBICを利用する方法を記述する。LDAP認証を後で試すかも。 ===== セッション管理 ===== 以下のプラグインをインストール * [[http://search.cpan.org/~nuffin/Catalyst-Plugin-Session-0.19/|Catalyst::Plugin::Session]] * [[http://search.cpan.org/~nuffin/Catalyst-Plugin-Session-State-Cookie-0.09/|Catalyst::Plugin::Session::State::Cookie]] * [[http://search.cpan.org/dist/Catalyst-Plugin-Session-Store-FastMmap/|Catalyst::Plugin::Session::Store::FastMmap]] ${APP_ROOT}/lib/Hoge.pmを修正してプラグインを読み込む。 <code perl> use Catalyst qw/ ... Session Session::Store::FastMmap Session::State::Cookie ... /; </code> ===== 認証、認可の処理 ===== 以下のプラグインをインストール * DBIxをCatalystで使うためのモジュール * [[http://search.cpan.org/~jayk/Catalyst-Plugin-Authentication-Store-DBIx-Class-0.10/|Catalyst::Plugin::Authentication::Store::DBIx::Class]]ore::DBIx::Class ユーザテーブルの作成 <code sql> CREATE TABLE users ( id INTEGER NOT NULL AUTO_INCREMENT, username VARCHAR(255) NOT NULL, role VARCHAR(255) NOT NULL, password VARCHAR(255), PRIMARY KEY (id), UNIQUE (username) ) character set utf8 type=innoDB; </code> yamlに設定を記述 <code> authentication: default_realm: 'members' realms: members: credential: class: 'Password' password_field: 'password' password_type: 'clear' store: class: 'DBIx::Class' user_class: 'DBIC::Users' id_field: 'username' role_column: 'role' </code> ${APP_ROOT}/lib/Hoge.pmを修正してプラグインを読み込む。 <code perl> use Catalyst qw/ ... Authentication Authorization::Roles ... /; </code> ログイン処理コードの例 <code perl> sub index : Private { my ( $self, $c ) = @_; if ($c->user_exists) { $c->req->action(undef); $c->res->redirect($c->uri_for("/admin/index")); } else { $c->stash->{message} = 'ログインしてください'; $c->stash->{template} = 'auth/index.tt'; } } sub login : Local { my ($self, $c) = @_; # 生パスワードを保存するのはキケンなので止めましょう $c->authenticate({ username => $c->req->param("username"), password => $c->req->param("password") }); if ($c->user_exists) { $c->req->action(undef); $c->res->redirect($c->uri_for("/admin/index")); } else { $c->stash->{message} = 'ユーザ名、またはパスワードが違います'; $c->stash->{template} = 'auth/index.tt'; } } sub logout : Local { my ($self, $c) = @_; $c->logout; $c->stash->{message} = 'ログアウトしました'; $c->stash->{template} = 'auth/index.tt'; } sub end : Private { my ($self, $c) = @_; $c->forward($c->view('TT')) unless ($c->response->body or $c->response->redirect); } </code> ログインが必要なコントローラのbeginに以下の記述を追加 <code perl> sub begin : Private { my ($self, $c) = @_; unless($c->check_user_roles("hogehoge")) { $c->req->action(undef); # これを書かないと本来のアクションが呼ばれてしまう。 $c->detach("/auth/"); # ログイン画面に飛ばす } } </code>
catalyst/auth.txt
· 最終更新:
2007/11/19 01:20
by
127.0.0.1
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ