我正在运行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')
)
);
任何想法都错了吗?
答案 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;
}
}