简单的问题,我想登录和退出各种用户的应用程序,以检查不同的应用程序功能。应用程序正在使用Auth0进行用户管理。
我将/ v2 / logout url称为我的流程的一部分。
但不知何故,在我退出之后,当我再次登录时,无缝SSO行为会运行,我会立即再次登录而没有提示 - 就好像从未调用过注销URL一样。
再次获取登录提示的唯一方法是清除浏览器缓存。在我需要删除的地方是否有auth0 cookie?或者我错过了什么?我正在阅读无缝的SSO文档但除了调用/ v2 / logout之外没有看到任何内容。
调用Auth0 /v2/logout
API endpoint将使用户退出Auth0和可选的IdP(如果指定federated
参数)。它不会从您的应用程序中注销用户,因此您需要在应用程序中实现该用户。
在Javascript SPA example中,在setSession()
中,我们将存储Access令牌(及其到期日期)和ID令牌存储在localStorage中。在logout()
函数中,我们将删除这些条目。这是从应用程序用户会话注销。您可以选择重定向到/v2/logout
以清除此功能中的Auth0和IdP会话。这样,当您检查用户是否经过身份验证时,isAuthenticated()
返回false,我们强制用户再次登录。
事实证明,问题在于重定向用户而不是直接调用注销URL。我正在使用单独的ajax api调用注销URL。但是,当我使用window.location.replace(logoutUrl)
时,注销实际上发生了。
来自auth0文档:
To force a logout, redirect the user to the following URL:
https://YOUR_AUTH0_DOMAIN/v2/logout
Redirecting the user to this URL clears all single sign-on cookies set by Auth0 for the user.
因此单独调用不起作用 - 必须重定向。我认为这是有道理的 - 一个单独的ajax调用没有用户会话上下文。