我们必须让我们的用户可以选择退出我们的应用程序。这将要求他们重新登录以供进一步使用。但是,在实现https://YOUR_AUTH0_DOMAIN/v2/logout?returnTo=http%3A%2F%2Fwww.example.com时,似乎由于某种原因没有删除 auth0 会话 cookie 。
即使重定向有效,用户也会在调用 webAuth.authorize() 后自动重新登录;而您可能会被要求重新输入您的凭据。第一次调用该函数时,需要用户输入用户名和密码。但是,在令牌过期之前不再需要它们。不幸的是,即使提供的示例(通过下载部分)也没有解决这个问题。想知道这是否可能,但似乎 Auth0 网站本身可以正确处理它。
下面是代码示例:
var logoutBtn = document.getElementById('vwLogoutBtn');
logoutBtn.addEventListener('click', logout);
function setSession(authResult) {
// Set the time that the access token will expire at
var expiresAt = JSON.stringify(
authResult.expiresIn * 1000 + new Date().getTime()
);
localStorage.setItem('access_token', authResult.accessToken);
localStorage.setItem('id_token', authResult.idToken);
localStorage.setItem('expires_at', expiresAt);
}
function logout() {
// Remove tokens and expiry time from localStorage
localStorage.removeItem('access_token');
localStorage.removeItem('id_token');
localStorage.removeItem('expires_at');
webAuth.logout({
returnTo: 'http://staging.myproject.com/prototype/home.html',
client_id: AUTH0_CLIENT_ID
});
displayButtons();
}
function displayButtons() {
if (isAuthenticated()) {
getProfile();
} else {
//You are not logged in
webAuth.authorize();
}
}
handleAuthentication();
});
我们也尝试过使用:https://YOUR_AUTH0_DOMAIN/v2/logout?returnTo=http%3A%2F%2Fwww.example.com
但是,每次用户注销并点击登录页面时,用户都会自动重新登录。
非常感谢任何帮助/指导。谢谢,
经过大量测试,我实际上能够回答我自己的问题 LOL
问题是注销(会话 cookie 删除)与重新登录的结合发生得太快了。延迟调用 webAuth.authorize() 表明用户已成功注销。您当然不想延迟此功能。就我而言,我现在转发到“已注销”页面,该页面还提供重新登录的选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句