2

CakePHPを使用して簡単なアプリを作成していますが、SSL証明書を取得できず、フォームでプレーンテキストでパスワードを投稿したくないため、DigestAuthenticateを使用することにしました。

したがって、ログイン、ログアウト、すべてがログインステータスに従って正常に機能しています。ただし、ログアウトした後、再度ログインすると、パスワードやユーザー名を尋ねることなく自動的にログインします。これにより、一定期間(1日程度?)ログアウトし、ユーザー名とパスワードを再度要求するまで、アカウントを変更できなくなります。また、私が公共のコンピューターを使用していて、次の人がパスワードのプロンプトさえも表示せずに私のアカウントにログインしたくない場合は、セキュリティ上のリスクがあります。

私の質問ですが、Cakeに欠落している設定がありますか、それともこれが私のブラウザが私の資格情報を記憶していて、アプリがそれらを要求したときにそれらを提供するのですか?ログアウトするとクレデンシャルがクリアされるように感じます。ChromeとFirefoxの両方で同じ結果を試しましたが、[パスワードを記憶する]チェックボックスもオンにしていません。

私の認証コンポーネントの開始:

public $components = array('Session', 'RequestHandler', 'Auth' => array(
            'authenticate' => array('Digest'),
            'loginRedirect' => array('controller' => 'posts', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'posts', 'action' => 'index'),
        ));

ログイン機能:

public function login() {
//No longer Auth Magic
 if ($this->Auth->login()) {
   return $this->redirect(array('controller' => 'posts', 'action' => 'index'));
 } else {
   $this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
 }
   $this->autoRender = false;
}

ログアウト機能:

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

}

それで、何かアイデアはありますか?私が言及しなければならない他の唯一のことは、DigestAuthenticate :: password関数を使用するために手動でDigestAuthenticate.phpを含める必要があったことです。Cakeは、DigestAuthenticateクラスが存在しないというエラーをスローしていました。ここで問題を参照してください:http://ask.cakephp.org/questions/view/digestauthenticate

4

1 に答える 1

1

CakePHPブックによると[ここ]

ダイジェストまたは基本認証を使用してログインしたユーザーをログアウトすることは、すべてのクライアントで実行するのは困難です。ほとんどのブラウザは、開いている間、資格情報を保持します。一部のクライアントは、401ステータスコードを送信することで強制的にログアウトすることができます。認証レルムの変更は、一部のクライアントで機能するもう1つのソリューションです。

それはおそらくあなたが聞きたかったものではありませんが...

于 2012-04-18T15:19:49.360 に答える