我有一个身份服务器4应用程序,带有一个JavaScript客户端和几个asp .net核心客户端。
JavaScript客户端是使用Adding a JavaScript client创建的。
我已经在asp .net核心应用程序上实现了反向通道注销。这样一来,当他们注销时,他们都会注销自己。我遇到的问题是JavaScript应用程序。我看不到反向频道注销将如何工作。我唯一能想到的就是让下面的代码每分钟检查一次服务器,以查看用户是否仍在登录。但这听起来像是对身份服务器的大量调用。
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客户端应用程序上实现单点登出/反向通道登出?
答案 0 :(得分:1)
没有更好的方法可以做到这一点。考虑一下,服务器必须通知客户端注销事件。它可以通过3种方式完成。
您已经在尝试选项2。限制流量的唯一方法是可以减少轮询间隔。客户端会话立即停用是否重要?您可以在客户端完成下一个服务器请求后停用会话。
关于选项1。您可以使用异步事件(如长轮询或websocket)将数据发送回客户端。