5

私はCakePHP 1.3からCakePHP 2.2.2に移行しており、単純な管理領域に対してBasic Http認証を使用したいと考えています。私はそれを動作させることができないだけで、私はドキュメントで何か間違ったことを理解していると思っています。ドキュメントから CakePHP 2 Basic Auth認証

は、私はさらに、私はそれでも、私が期待する以上のように構成して有効なユーザ日付を返すようにBaseAuthenticateコンポーネントを拡張する必要があることを理解

public $components = array(
    'Auth' => array(
     'authenticate' => array(
     'Basic' 
    ), 
     'authError' => 'You may not access this area.', 
     'authorize' => array('Controller') 
    ) 
); 

ような何かをする必要が理解されているブラウザのHttpアクセスダイアログがポップアップウィンドウで開きます。しかし、このようなことは起こりません。代わりに、存在しない/ users/loginにリダイレクトされます。 HTTPアクセスのログインビューが必要なのはなぜですか?私は混乱しています。

答えて

7

お使いのコントローラ(またはAppControllerまで)にAuthコンポーネントを追加します

class ThingsController extends AppController { 
    var $components = array('Auth'); 
} 

CakePHPはログインアクションを必要とするので、あなたは、HTTPエージェントが担当する基本認証を使用する場合でも、認証の詳細を収集するためのUIを使用するには、ログインを処理する一部のコントローラでアクションを指定する必要があります(Basicの場合、ユーザーがまだ認証されていない場合はWWW-Authenticate: Basicヘッダを送信します)。

あなたはAuthCompoment$loginActionを設定しますが、このデフォルト(および規則を破ることはないことをお勧めします)UsersControllerlogin方法にすることができます。だから、まずあなたのUsersController

class UsersController extends AppController { 

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

    public function login() { 
     if ($this->Auth->login()) { 
      return $this->redirect($this->Auth->redirect()); 
     } else { 
      $this->Session->setFlash('Not able to login'); 
     } 
    } 

    public function logout() { 
     $this->redirect($this->Auth->logout()); 
    } 

} 
+0

に以下を追加し、View/Users/login.ctpで空のテンプレートを作成して働いていたこと、ありがとうございます! –