Javascript JavasSript单点注销/反向通道注销
我有一个identity server 4应用程序、一个JavaScript客户端和几个asp.net核心客户端 JavaScript客户端是使用创建的 我已经在asp.net核心应用程序上实现了反向通道注销。因此,当一个人注销时,他们都会自己注销。我遇到的问题是JavaScript应用程序。我不知道退出后台频道会有什么效果。我唯一能想到的就是让下面的代码每分钟检查一次服务器,看看用户是否仍然登录。但这听起来像是给身份服务器打了很多电话Javascript JavasSript单点注销/反向通道注销,javascript,identityserver4,Javascript,Identityserver4,我有一个identity server 4应用程序、一个JavaScript客户端和几个asp.net核心客户端 JavaScript客户端是使用创建的 我已经在asp.net核心应用程序上实现了反向通道注销。因此,当一个人注销时,他们都会自己注销。我遇到的问题是JavaScript应用程序。我不知道退出后台频道会有什么效果。我唯一能想到的就是让下面的代码每分钟检查一次服务器,看看用户是否仍然登录。但这听起来像是给身份服务器打了很多电话 function login() { mgr.si
function login() {
mgr.signinRedirect();
}
function api() {
mgr.getUser().then(function (user) {
var url = "http://localhost:5001/identity";
var xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.onload = function () {
log(xhr.status, JSON.parse(xhr.responseText));
}
xhr.setRequestHeader("Authorization", "Bearer " + user.access_token);
xhr.send();
});
}
function logout() {
mgr.signoutRedirect();
}
有没有一种方法可以在JavaScript客户端应用程序上实现单点注销/反向通道注销?没有更好的方法可以做到这一点。考虑一下,服务器必须通知客户端注销事件。它可以通过三种方式完成 服务器发送注销事件 客户端定期轮询并获取此信息。 魔术-显然这不是一个有效的选择。 您已经在尝试选项2。限制通信量的唯一方法是缩短轮询间隔。立即停用客户端会话是否重要。一旦客户端完成下一个服务器请求,您就可以停用会话
至于备选方案1。您可以使用异步事件(如长轮询或websockets)将数据发送回客户端。感谢您验证我的暂停,选项1不可能,我不是客户端开发人员,所以不是100%确定。不幸的是,这是与银行相关的数据,所以用户需要尽快注销。我被告知5分钟太长了,所以需要进行大量的轮询。我想知道信号机是否是一个选项。是的,那可能是一个选项。取决于您当前使用的技术。Websocket、长轮询、服务器事件、SIGNAL-r都是一些选项。如果您感兴趣的“我的轮询”不正常,请继续。