2012-04-18 54 views
2

私はCakePHPを使って簡単なアプリケーションを作成しています。私はSSL証明書を取得できないため、ダイジェスト認証を使用することにしました。フォームで。CakePHP Digestを使用する認証:ログアウト後にパスワードなしで成功

これはうまく動作しています。ログイン、ログアウト、すべてがログインステータスに従って動作します。しかし、ログアウトした後、再度ログインすると、パスワードやユーザー名を要求せずに自動的にログインします。これは私が一定の期間(1日かそれ以上)ログアウトし、再びユーザー名とパスワードを要求するまでアカウントを変更することを不可能にします。私は公共のコンピュータを使用していて、パスワードを知らなくても次の人が自分のアカウントにすべてログインしてもらえないようにしたいと思っています。

私の質問は、ケーキに欠けている設定があるのか​​、このブラウザが私の資格情報を覚えておいて、アプリケーションが要求したらそれを提供することです。ログアウトすると、資格情報をクリアする必要があります。私はChromeとFirefoxの両方で同じ結果を試しましたが、私は自分のパスワードを覚えていません。

マイAuthコンポーネントのintiation:

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

答えて

1

CakePHPのブック[here]によると:ダイジェストまたは基本認証でログインしたユーザをログアウト

は すべてのクライアントのために達成することは困難です。ほとんどのブラウザでは、まだ開かれている間は資格情報が になります。一部のクライアントは、 に、401のステータスコードを送信してログアウトさせることができます。 認証領域を変更することは、一部のクライアントで機能する別のソリューションです。あなたが聞きたかったおそらくありませんが、

...そこにあなたがそれを持っている

+0

まあ、私は本を読むときは、これに対する解決策を探していることを逃した信じることができません。ありがとう! – Dsyko

関連する問題