我在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>
答案 0 :(得分:3)
也许该问题与IE安全区域有关,您可以尝试进入“ Internet选项”>“安全”,然后取消选中“ Internet”区域的“已启用保护模式”。