TOP設計・移行・活用> ログインフォーム
SledgeによるWebアプリケーションフレームワーク入門
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モジュールの公開も行っている。


INDEX
第3回:認証
  はじめに
  Webアプリケーションでの認証
  Sledgeでの認証処理の実装
ログインフォーム