2011-12-08 22 views
2

私はCakePHP 1.3から2.0.4に私のアプリケーションをアップグレードしました。Cakephp 2.0と基本認証

これまで、セキュリティコンポーネントを使用して、1つのコントローラでのみ基本HTTP認証をエミュレートすることができました。

私はこのような何かをするために使用されていない:

$this->Auth->allow(array('*')); 
$this->Security->loginOptions = array('type'=>'basic','realm'=>'api'); 
$this->Security->loginUsers = array("api"=>"123"); 
$this->Security->requireLogin(); 

今SecurityComponentはもはや基本とダイジェスト認証処理し、私はこのような何かをする必要があります。

public $components = array(
    'Auth' => array(
     'authenticate' => array('Basic') 
    ) 
); 

しかし、ときに私は上これを使用します私のApiControllerは、/ users/loginのログインフォームにリダイレクトします。何か不足していますか?

+0

これで不運なことはありますか? –

答えて

1

ログイン操作で認証コンポーネントを設定する必要があります。ケーキ本のConfiguring Authentication handlersのセクションをチェックしてください。

public $components = array(
    'Auth'=> array(
    'loginAction' => array(
     'controller' => 'api', 
     'action'  => 'login' 
    ), 
    'loginRedirect' => array(
     'controller' => 'api', 
     'action'  => 'logged_on' 
    ), 
    'authenticate' => array(
     'Basic' => array(
     'realm' => 'api' 
    ) 
    ) 
) 
); 

また、ケーキがもはやloginUsersプロパティを使用して定義するユーザーをサポートしていることに注意すべきではない:

あなたのセットアップは、おそらくこれに似たものになります。 BasicAuthenticateクラスを拡張して、getUser()メソッドをオーバーライドする必要があります。

+0

それは働いて、ありがとう! – xsquirrel