前回までに写真付きブログサーバを作成しました。今回は,
サンプルコードはこちらからダウンロードできます。
認証
AtomPubでは認証方式は決められておらず,
テーブルの作成
ユーザ情報を格納するテーブルを作成し,
ユーザ名とパスワードをguest,abcとします。パスワードはMD5で変換してから格納しますので,
MyBlog % perl -MDigest::MD5 -e "print Digest::MD5::md5_hex('abc')" 900150983cd24fb0d6963f7d28e17f72
テーブルを作成します。テーブル名をusersとし,
MyBlog % sqlite3 test.db sqlite> CREATE TABLE users ( ...> id INTEGER PRIMARY KEY, ...> username TEXT UNIQUE, ...> password TEXT ...> );
ユーザをテーブルに追加します。
sqlite> INSERT INTO users (username, password) VALUES ('guest', '900150983cd24fb0d6963f7d28e17f72');
認証処理の実装
MyBlogに認証プラグインを追加します。認証情報の格納先は,
認証プラグインを追加
use Catalyst qw(
-Debug
ConfigLoader
Static::Simple
Authentication
Authentication::Store::DBIC
Authentication::Credential::HTTP
);
Catalyst認証モジュールを設定します。詳細は省略します。
Basic認証の設定
authentication:
dbic:
user_class: DBIC::User
user_field: username
password_field: password
password_type: hashed
password_hash_type: MD5
http:
type: basic
認証処理を実装します。認証処理は,
どのようなルールで認証を行うかはサービスによりますが,
認証勝利の実装
sub auto :Private {
my($self, $c) = @_;
# GETでもHEADでもなければ認証を実行する
$c->authorization_required(realm => 'My Blog')
if $c->req->method ne 'GET' && $c->req->method ne 'HEAD';
return 1;
}
ここでは,