Permalink
Browse files

add auth doc.

  • Loading branch information...
1 parent f2af17e commit 5d4e343c243577f9abc49b7e3a0ba02a68908464 @nekokak committed Jan 26, 2010
Showing with 89 additions and 0 deletions.
  1. +89 −0 lib/Kamui/Manual/JA/Authorizer.pod
@@ -0,0 +1,89 @@
+=head1 NAME
+
+Kamui::Manual::JA::Authorizer - KamuiのAuthorizerについて
+
+=head1 DESCRIPTION
+
+KamuiではAuthorizerを色々な形でかけることができます。
+
+KamuiはPlackベースなwafなのでPlack::Middleware::Authで
+authしてもいいのですが、細かいコントロールがしたい場合があるので、
+独自実装をもっています。
+もちろんPlack::Middleware::Authを使ってもいいと思います。
+
+KamuiのAuthorizerは基本Sledgeに似た使い方になっていますが、
+一部Sledgeとはことなるので注意してください。
+
+=head1 Authorizerの使い方
+
+Authorizerをつかうには
+
+ package MyAPP::Web::Authorizer::BasicAuth;
+ use Kamui;
+ use base 'Kamui::Web::Authorizer::BasicAuth';
+ my $passwd = '0000';
+ sub authorize {
+ my ($class, $context) = @_;
+
+ my ($login_id, $login_pw) = $class->basic_auth($context);
+ if ($passwd eq $login_pw) {
+ return;
+ } else {
+ return $class->show_error_page;
+ }
+ }
+ 1;
+
+このようなAuthorizerクラスを用意し、
+
+ package MyAPP::Web::Controller::Root;
+ use Kamui::Web::Controller -base;
+ __PACKAGE__->authorizer('+MyAPP::Web::Authorizer::BasicAuth');
+
+
+このようにControllerクラスで指定するだけです。
+これで、このMyAPP::Web::Controller::Root全体にMyAPP::Web::Authorizer::BasicAuthによる
+認証がかけられます。
+
+=head2 dispatchされるmethod単位で認証を分ける
+
+先の例ではController単位でしか認証をかけることができませんでした。
+しかし、1Controller内のdispatchされるmethodでも
+認証をかけたいmethodとかけたくないmethod
+このmethodだけはちょっと別の認証をかけたい。。。
+なんてことがあるかもしれません。
+Kamuiではそんな事も可能です。
+
+基本的には先の例のように設定し、
+Controller全体に認証をかけたとします。
+
+ package MyAPP::Web::Controller::Root;
+ use Kamui::Web::Controller -base;
+ __PACKAGE__->authorizer('+MyAPP::Web::Authorizer::BasicAuth');
+
+ sub do_index {}
+ sub do_add {}
+ sub do_edit {}
+ sub do_del {}
+ 1;
+
+この例だとdo_*のメソッド全てに認証がかかりますが、
+do_indexメソッドには認証を掛けたくないんだよなぁと言う場合、
+以下のようにします。
+
+ pckage MyAPP::Web::Controller::Root;
+ use Kamui::Web::Controller -base;
+ __PACKAGE__->authorizer('+MyAPP::Web::Authorizer::BasicAuth');
+
+ sub do_index : auth('Null') {}
+ sub do_add {}
+ sub do_edit {}
+ sub do_del {}
+ 1;
+
+このように個別に認証をかけたいmethodのアトリビュートにauto('xxxx')と指定することで
+指定したAuthorizerがそのメソッド用に設定されます。
+
+この例ではKamui::Web::Authorizer::Nullが設定されます。
+
+=cut

0 comments on commit 5d4e343

Please sign in to comment.