尝试通过REST登录时,我只是添加了:
if ($this->RequestHandler->isXML()) {
$this->Auth->authenticate = array('Basic');
}
到我的插件AppController。当我通过休息客户请求时,我得到: DbAcl :: check() - 权限检查中的ARO / ACO节点查找失败。
我的用户对象被转储。奇怪的是,它似乎正在记录我但没有正确读取权限?
答案 0 :(得分:0)
当我补充道:
$this->Auth->authorize = array('Controller');
并实现了isAuthorized方法:
public function isAuthorized($user) {
if (isset($user['role_id']) && $user['role_id'] == 1) {
return true; //Admin can access every action
}
return false; // The rest don't
}
有效。
答案 1 :(得分:0)
这里有一个基本的东西,你似乎缺席:身份验证和授权是两件不同的事情。
身份验证是通过提供的凭据识别用户并确保用户是他们所声称的人的过程。这通常使用用户名和密码完成。
授权是确保允许当前用户访问的过程 特定资源。
您收到的错误是授权错误,我打电话告诉您,您正在尝试使用ACL。您对此问题的解决方法是配置基于Controller的授权,并通过它允许管理员访问所有内容。 Controller Based Authorization与ACL授权无关。检查提供的链接。
AuthComponent实现了3种不同类型的Authentication:
FormAuthenticate - 允许您根据表单POST对用户进行身份验证 数据。通常这是用户输入信息的登录表单。
BasicAuthenticate - 允许您使用Basic HTTP对用户进行身份验证 认证
DigestAuthenticate - 允许您使用摘要对用户进行身份验证 HTTP身份验证。
如果您正在开发REST service,我建议您使用Digest Authentication作为“最好的”,但它仍然取决于您登录的内容。