Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cakephp 3和注销混淆_Php_Cakephp_Cakephp 3.0_Auth0 - Fatal编程技术网

cakephp 3和注销混淆

cakephp 3和注销混淆,php,cakephp,cakephp-3.0,auth0,Php,Cakephp,Cakephp 3.0,Auth0,我不知道事情是否按预期进行 我有一个简单的cakephp3实现,cake-auth0(),我使用的是auth0登录表单 这个流程运行得很好 example.com/users/login->form->my-domain.auth0.com->example.com/users/login?code=secret 注销用户是我遇到问题的地方 example.com/users/logout->auth0域(kill cookie)->example.com 这将成功地使我登录和注销auth0,一

我不知道事情是否按预期进行

我有一个简单的cakephp3实现,cake-auth0(),我使用的是auth0登录表单

这个流程运行得很好

example.com/users/login->form->my-domain.auth0.com->example.com/users/login?code=secret

注销用户是我遇到问题的地方

example.com/users/logout->auth0域(kill cookie)->example.com

这将成功地使我登录和注销auth0,一切正常。 然而,我一直登录到cake,这让我有点紧张。 带有一些会话用户输出的登录页面显示我已登录,我可以访问example.com/users页面。尚未登录时,我无法查看它

如果有帮助的话,我还没有为用户创建任何数据库

除了使用php对所有会话/Cookie进行野蛮攻击外,还有其他人有什么想法吗


更新:通过代码挖掘了很多东西。Cake的香草Authcomponent::注销没有什么作用。通过手动终止某种会话,我获得了一些对我有用的东西

我会把这件事留着,因为我知道某个古鲁会在某个时候出现

我能够像这样实现注销(蛋糕):

public function logout() {
  $url = $this->Auth->logout();
  $this->request->session()->destroy();
  return $this->redirect($url);
}
调用AuthComponent的注销函数并保存响应url字符串

销毁请求会话,因为注销没有这样做


重定向。

如果您想从那些不一定是auth0专家的人那里寻求帮助,可能需要添加一些关于实际登录和注销流程的技术细节,特别是关于后者。从您显示的代码中,我看不出这除了在调用controllers
logout
方法时清除CakePHP会话存储之外还有什么作用。@ndm我认为这个问题与auth0无关,除非我使用的cake-auth0插件有不完整的地方。auth0周围的一切都在工作,但当我尝试在注销后访问登录用户的信息时,我仍然可以获取该信息。就好像cake的auth注销不起作用一样。我运行了一个调试器并吐出了信息,它确实到达了应该终止会话的代码,但没有终止会话。如果不知道确切的流程,很难判断可能发生了什么,人们只能猜测。同样,通过查看代码,我看不到调用
logout()
将如何影响CakePHP身份验证会话数据以外的任何内容,似乎没有任何内容会以任何方式影响可能的身份验证会话数据(存储在PHP会话中),更不用说身份验证会话了。你说是的,但我没有任何信息可以证明这一点,这并不能让事情变得更简单。在只有CakePHP身份验证会话数据受到影响的情况下,身份验证组件可能会再次获取从auth0会话数据检索到的用户信息。这可能与您的声明相矛盾,您正在从auth0登录auth,但正如我所说的,我无法确定是否确实如此,因此我在黑暗中拍摄。添加一些会话调试信息可能也会有所帮助,例如重定向之前、重定向之后以及auth组件启动前后的确切会话内容。Auth0只是使用标准oauth内容进行登录。AuthComponent::logout()返回一个url。使用我的auth0设置,这是他们给我的注销url,它终止特定用户对该应用程序的身份验证状态。使用cake授权用户的过程是通过我的登录方法显式完成的。我注意到我正在使用的cake-auth0插件没有AuthComponent,因此我认为可能存在某种尚未解决的不兼容性。谢谢你抽出时间。我自己也很准时,所以我自己就结束了这次会议。希望没有问题。
public function logout() {
  return $this->redirect($this->Auth->logout());
  // $this->redirect('http://auth0.domain?returnTo=http://example.com/');
}
public function beforeFilter(Event $event) {
  parent::beforeFilter($event);
  $this->Auth->allow('logout'); // Appears to do nothing
}
public function logout() {
  $url = $this->Auth->logout();
  $this->request->session()->destroy();
  return $this->redirect($url);
}