 |

| | 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モジュールの公開も行っている。
|
|
 |
|
 |
|