在我的带有自定义身份验证实现的cakephp应用程序中(请参见here),我想在beforefilter方法中检查用户的身份验证,如果他/她未通过身份验证,我想手动呈现错误页面并退出。我的问题是,似乎在对需要身份验证的操作进行操作调用之后,才对auth对象填充数据。我将需要在我的beforefilter函数中访问身份验证数据。如何做到这一点?如果我尝试访问它auth-> user(),则返回NULL,loginIn()始终返回false(因为没有数据,很有意义)

最佳答案

我偶然发现了这个问题,建议的解决方案对我不起作用。

在Cakephp 3中的beforeFilter中获取身份验证信息的正确方法是调用

$this->Auth->config('checkAuthIn', 'Controller.initialize');

在加载auth组件之后。这在无状态身份验证方案(例如令牌身份验证)中特别有用。

然后,您可以通过调用在beforeFilter中获取用户信息

$user = $this->Auth->user();

参见文档http://book.cakephp.org/3.0/en/controllers/components/authentication.html#deciding-when-to-run-authentication

09-18 05:54