Cakephp摘要身份验证在Chrome浏览器中不起作用

时间:2015-03-27 12:51:51

标签: cakephp authentication authorization digest cakephp-2.6

我正在运行cakephp 2.6和xamp webserver,我试图让Digest Auth与cakephp一起工作。

当我使用它时,一直在反复询问用户名和密码。我不确定什么是错的或如何解决这个问题。我找到了关于如何在cakephp中使用digest auth的教程。

我遵循了cakephp手册中的指南;

http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html

App控制器;

public $components=array(
'Session',  'Security',
'Auth'=>array(
    'loginRedirect'=>array('controller'=>'users','action'=>'index'),
    'logoutRedirect'=>array('controller'=>'users','action'=>'index'),
    'authError'=>'Access Denied: You are not authorized to view that page.',
    'authorize'=>array('Controller'),       
    'authenticate' => array('Digest')
    )
);

任何想法都错了吗?

1 个答案:

答案 0 :(得分:0)

我没有尝试过#34;蛋糕"方式,但在我的app控制器(在beforeFilter()内)中使用此代码对我有效。

        if (!isset($_SERVER['PHP_AUTH_USER'])) {
            header('WWW-Authenticate: Basic realm="Your Realm"');
            header('HTTP/1.0 401 Unauthorized');
            echo 'Ops!! Smth wrong';
            exit;
        } else {
            $hash = 'sha512 hash of your password with cakes salt';
            if ($_SERVER['PHP_AUTH_USER'] == 'your_username' && Security::hash($_SERVER['PHP_AUTH_PW'], 'sha512', true) == $hash) {
                ;
            } else {
                header('WWW-Authenticate: Basic realm="Your Realm"');
                header('HTTP/1.0 401 Unauthorized');
                echo 'Ops!! Smth wrong';
                exit;
            }
        }