Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JavasSript单点注销/反向通道注销_Javascript_Identityserver4 - Fatal编程技术网

Javascript JavasSript单点注销/反向通道注销

Javascript JavasSript单点注销/反向通道注销,javascript,identityserver4,Javascript,Identityserver4,我有一个identity server 4应用程序、一个JavaScript客户端和几个asp.net核心客户端 JavaScript客户端是使用创建的 我已经在asp.net核心应用程序上实现了反向通道注销。因此,当一个人注销时,他们都会自己注销。我遇到的问题是JavaScript应用程序。我不知道退出后台频道会有什么效果。我唯一能想到的就是让下面的代码每分钟检查一次服务器,看看用户是否仍然登录。但这听起来像是给身份服务器打了很多电话 function login() { mgr.si

我有一个identity server 4应用程序、一个JavaScript客户端和几个asp.net核心客户端

JavaScript客户端是使用创建的

我已经在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客户端应用程序上实现单点注销/反向通道注销?

没有更好的方法可以做到这一点。考虑一下,服务器必须通知客户端注销事件。它可以通过三种方式完成

服务器发送注销事件 客户端定期轮询并获取此信息。 魔术-显然这不是一个有效的选择。 您已经在尝试选项2。限制通信量的唯一方法是缩短轮询间隔。立即停用客户端会话是否重要。一旦客户端完成下一个服务器请求,您就可以停用会话


至于备选方案1。您可以使用异步事件(如长轮询或websockets)将数据发送回客户端。

感谢您验证我的暂停,选项1不可能,我不是客户端开发人员,所以不是100%确定。不幸的是,这是与银行相关的数据,所以用户需要尽快注销。我被告知5分钟太长了,所以需要进行大量的轮询。我想知道信号机是否是一个选项。是的,那可能是一个选项。取决于您当前使用的技术。Websocket、长轮询、服务器事件、SIGNAL-r都是一些选项。如果您感兴趣的“我的轮询”不正常,请继续。