【发布时间】:2015-01-04 15:50:29
【问题描述】:
我正在为我的 cake 3.0 应用程序编写一些 REST api,我需要将 $this->Auth->unauthorizedRedirect 设置为 false,因为手册上说这会阻止我的应用程序重定向到登录 url 以获取未经授权的请求。
http://api.cakephp.org/3.0/class-Cake.Auth.BasicAuthenticate.html
问题是我试图在我的用户控制器中设置它,但它不起作用:
class UsersController extends AppController {
public function initialize() {
parent::initialize();
$this->loadComponent('RequestHandler');
}
public function beforeFilter(Event $event) {
parent::beforeFilter($event);
$this->Auth->allow(['logout']);
// Change the authentication mode when using REST api
if(! $this->RequestHandler->accepts('html')) {
$this->Auth->unauthorizedRedirect = false;
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
}
}
}
这个脚本可以很好地检测用户是否实际注册,但是当我尝试使用错误的身份验证数据时失败,显示登录表单而不是引发错误。我做错了什么?
【问题讨论】:
-
刚刚记得基本的身份验证适配器默认会抛出异常,所以我假设您实际上并没有使用它,尽管您已经链接到它的文档?
-
我做了,但是我用错了(我把 Basic 和 Form 认证放在一起,假设 Cake 会自动切换到正确的…你给我指出了正确的方向有了这个评论,你的回答真的澄清了很多关于身份验证和授权的工作原理。谢谢!p.s.这些答案真的应该放在手册的某个地方,比如常见问题解答部分......
标签: authentication cakephp-3.0