我无法解决事情是否按预期发挥作用。
我有一个简单的cakephp3,cake-auth0(https://github.com/jsoftb/auth0)的实现,我正在使用auth0登录表单。
此流程运行正常。
example.com/users/login - >形式 - > my-domain.auth0.com - > example.com/users/login?code=secret
.mobile-nav-icon {
padding: 1.25em;
}
.mobile-nav-icon:hover, .mobile-nav-icon:focus {
background: #40514f;
color: #fff;
}
.mobile-nav {
position: relative;
display: inline-block;
float: right;
overflow: visible;
}
.mobile-nav-drop {
display: none;
position: absolute;
right: 0;
background: #ccc;
min-width: 10em;
box-shadow: 0 0 .25em 0 rgba(0,0,0,.2);
}
.show {
display: block;
}
.mobile-nav-drop a {
color: #000;
padding: 1em;
display: block;
}
.mobile-nav-drop a:hover {
background: #aaa;
}
记录用户是我遇到问题的地方。
example.com/users/logout - > auth0-domain(kill cookie) - > example.com
function mobileNavDrop() {
document.getElementById('mobileNavDrop').classList.toggle('show');
}
window.onclick = function(event) {
if (!event.target.matches('.mobile-nav-icon')) {
var dropdowns = document.getElementsByClassName('mobile-nav-drop');
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
};
这成功登录和退出auth0就好了。 然而,我仍然记录在蛋糕中,它让我有点邋.. 我的登录页面有一些会话用户输出显示我已登录,我可以访问页面example.com/users。我尚未登录时无法查看。
如果有帮助,我还没有创建任何与用户一起使用的数据库内容。
如果没有使用php进行残酷和核算所有会话/ cookie,其他人都有任何想法吗?
更新:通过代码挖掘了很多东西。 Cake的vanilla Authcomponent :: logout并没有做任何事情。我设法通过手动杀死某种类型的 会话来获得对我有用的东西。
我会离开这个,因为我知道有些大师会在某个时候出现。
我能够像这样实现退出(蛋糕):
$auth_code = $this->request->query('code', null);
if(!is_null($auth_code)) {
$user = $this->Auth->identify();
if($user) {
$this->Auth->setUser($user);
return $this->redirect($this->Auth->redirectUrl()); // example.com/
}
}
调用AuthComponent的注销功能并保存响应url字符串。
销毁请求会话,因为注销没有。
重定向。