仅当我使用IE11时才会自动触发事件addUserSignedOut

时间:2019-02-17 10:14:38

标签: javascript internet-explorer oidc

我在ASP.NET Web窗体上使用oidc.js版本:1.5.2,由于某种原因,当我导航到回调页面时,有人触发了我的addUserSignedOut事件。 这种奇怪的行为仅发生在IE11中(在chrome,edge,firefox中工作正常)。

这是主页         
        

        var baseUrl = top.location.protocol + '//' + top.location.host;

        var config = {
            authority: "http://...",
            client_id: 'xyz',
            redirect_uri: baseUrl + '/myFolder/callback.html?',
            post_logout_redirect_uri: baseUrl + '/myFolder/page.html?',
            revokeAccessTokenOnSignout: true,
            response_type: 'id_token token',
            scope: 'abc',
            prompt: 'true',
            loadUserInfo: true,
            automaticSilentRenew: true,
            accessTokenExpiringNotificationTime: 1800,
        };

       var mgr = new Oidc.UserManager(config);

        var isLoggedIn = function () {
            return new Promise(function (resolve) {
                mgr.getUser()
                    .then(function (token) {
                        console.log("getUser token=" + token);
                        resolve(token != null);
                    });
            });
        }

        var doLogin = function () {
            this.isLoggedIn().then(function (res) {
                if (!res)
                    mgr.signinRedirect();
            });
        };

        var doLogout = function () {
            mgr.signoutRedirect();
        };

        var registerEvents = function () {
            this.isLoggedIn().then(function (res) {

                if (res) {
                    mgr.events.addUserSignedOut(function () {

                        Auth.userManager.removeUser();

                        return Auth.userManager.signoutRedirect();
                    });
                }
            });
        };

        registerEvents();


    </script>

这是回调页面

<script>
    new Oidc.UserManager({ response_mode: "query" }).signinRedirectCallback().then(function (res) {
        if (res) {
            console.log("token = " + res.access_token);
            window.location.href = "page.html";
            }
        })
        .catch(function (e) {
            console.error(e);
        });
</script>

1 个答案:

答案 0 :(得分:3)

也许该问题与IE安全区域有关,您可以尝试进入“ Internet选项”>“安全”,然后取消选中“ Internet”区域的“已启用保护模式”。