Auth0-注销时删除会话Cookie

时间:2018-10-11 15:56:36

标签: cookies auth0

我们必须为我们的用户提供退出我们应用程序的选项。这将要求他们重新登录以进一步使用。但是,似乎在实现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

但是,每次用户注销并点击登录页面时,该用户都会自动重新登录。

非常感谢您的帮助/指导。谢谢

1 个答案:

答案 0 :(得分:0)

经过大量测试,我实际上可以回答我自己的问题大声笑

问题是注销(会话cookie删除)与重新登录相结合的发生太快了。延迟调用webAuth.authorize()表示用户已成功注销。 您当然不想延迟此功能。就我而言,我现在要转到“注销”页面,该页面还提供了重新登录的选项。