|
|
SledgeによるWebアプリケーションフレームワーク入門 |
第3回:認証
著者:ライブドア 池邉 智洋 2005/6/27
|
|
|
前のページ 1 2 3 4
|
|
ログインフォーム
|
Sledgeの制限として、認証のかかっていないログインフォームは別のクラスとして実装する必要があります。ログインフォームは以下のようなコードになります。
|
package ThinIT::Pages::Root;
use strict;
use base qw(ThinIT::Pages);
sub dispatch_login {}
sub post_dispatch_login {
my $self = shift;
my $userid = $self->r->param('userid');
my $pass = $self->r->param('password');
if(my $user = $self->check_user($userid, $pass)) {
# 認証成功
$self->session->param(login => $user);
$self->redirect('/authz/');
}
else {
$self->tmpl->param(error => 'login failed');
}
}
sub check_user {
my($self, $userid, $password) = @_;
# RDBMS に接続する等して、ID、パスワードの正当性を確認する。
}
|
また、ログインページのテンプレート(login.html)は以下のようになります。
|
<html>
<head>
<title>ログイン</title>
</head>
<body>
[% IF error %]
<div style="color:#ff0000">[% error %]</div>
[% END %]
<form method="POST" action="login.cgi">
ID: <input type="text" name="userid"><br>
パスワード: <input type="password" name="password"><br>
<input type="submit" value="LOGIN"><br>
</form>
</body>
</html>
|
フォームからPOSTされたユーザIDとパスワードを受け取り、RDBMSなどのユーザデータベースを検索して認証(Authentication)処理を行ないます。ユーザID、パスワードが一致しなかった場合はエラーメッセージと共に再度ログインフォームを表示します。
|
まとめ
|
Sledgeでの認証方法を解説してきましたが、いかがだったでしょうか。
こういった認証処理を一から書くとなると、Cookieによるセッション管理機構や認証をかけるページの判定などがあり、かなり複雑な処理の実装が必要になります。
認証部分でのバグはセキュリティホールとなってしまう可能性が高いので、基本的な部分はフレームワークにまかせて開発を行なうのが良いのではないでしょうか。
|
前のページ 1 2 3 4
|
|
|
|
著者プロフィール
株式会社ライブドア 池邉 智洋
ネットサービス事業本部 システムグループ マネージャー。2001年10月よりライブドア(当時オン・ザ・エッヂ)にて受託開発業務のWebアプリケーション開発に従事。2003年11月よりlivedoorのポータル化にたずさわり、各種サービスの開発を行う。個人的にCPANモジュールやApacheモジュールの公開も行っている。
|
|
|
|