TOP(WebOS) |  TOP(Normal) |    AboutUs |  ContcutUs |  Sitemap

cakePHP1.2でBasic認証

cakePHP1.2でBASIC認証を使いたい。BASIC認証とは会員性のホームページなどにあるログインダイアログが表示されて正しいパスワードを入力しないと先へ進めないもの。普通はApacheのhtacessとhtpasswordを使わなければならないものが、以下のように簡単にできます。
Securityコンポーネントを使います。コードを読みながらなので自己責任でお願いします。
データベースとログインフォームを使った認証ならAuthコンポーネントを使いましょう。 

var $components = array('Security');

$users = array('(ユーザー名)'=>'(パスワード)');
$this->Security->requireLogin('add','edit','delete'); //使いたいアクション
$this->Security->requireLogin(array('type'=>'basic','realm'=>"パスワードを入力してください",'users'=>$users)); 

Contoroller毎にも制御したいのですが、まだわかりません。
ただ、こうすると入力フォームでもトークンキーを使った認証をしようとしてくれます。($form->create()と$form->end()を使うらしい)
いろいろやったけどうざったいので、
$this->params['requested'] = 1;
を付けて回避しました。本来はReqestActionで呼び出された時の判定用みたいなので、こういう使い方をしてはいけない気がします。
このままでもREST呼び出ししたときにはBASIC認証を要求してくれました。

BASIC認証ではパスワードが平文で通信されるので注意。
 * An associative array of usernames/passwords used for HTTP-authenticated logins.
 * If using digest authentication, passwords should be MD5-hashed.
digest認証モードではmd5ハッシュしなさいだそうです。