在我的cakephp应用程序中使用自定义身份验证实现(请参阅here)我想在beforefilter方法中检查用户的身份验证,如果他/她未经过身份验证,我想手动呈现错误页面并退出。我的问题是,在动作调用需要auth的动作之后,auth对象似乎只被数据填充。我需要在我的beforefilter函数中访问auth数据。怎么实现这个?如果我尝试访问它auth-> user()它返回NULL,loggedIn()返回总是false(因为没有数据,有意义)
答案 0 :(得分:3)
无需检查用户是否经过身份验证并显示错误页面。只需将unauthenticated()
方法添加到自定义身份验证类,就像BasicAuthenticate类一样(不设置标题)。使用异常渲染器的错误处理程序将生成相应的错误页面。
答案 1 :(得分:3)
我偶然发现了这个问题,提议的解决方案对我来说无效。
在Cakephp 3中获取autFilter中的auth信息的正确方法是调用
$this->Auth->config('checkAuthIn', 'Controller.initialize');
。这在无状态身份验证方案(例如令牌身份验证)中特别有用。
然后,您可以通过调用
在beforeFilter中获取用户信息 $user = $this->Auth->user();
答案 2 :(得分:2)
来自manual:
class CustomAuthenticate extends BaseAuthenticate {
public function authenticate(CakeRequest $request, CakeResponse $response) {
// Return an array of user if they could authenticate the user,
// return false if not
}
}
你authenticate
方法应该返回一个包含用户数据的数组。从你的链接到另一个问题似乎它没有
答案 3 :(得分:0)
在CakePHP 2.x中,可以做到这一点
$this->Auth->startup($this);