为了账号安全,请及时绑定邮箱和手机立即绑定

如何查看用户是否已从 Javascript 应用程序退出身份服务器

如何查看用户是否已从 Javascript 应用程序退出身份服务器

慕尼黑5688855 2021-10-14 12:59:42
我有一个身份服务器 4 应用程序、servral asp .net 核心应用程序和一个 Javascript 应用程序。我在 asp .net 核心应用程序上启用了反向通道注销。这样,如果其中一个应用程序注销,它们几乎都会立即注销。我遇到的问题是 JavaScript 应用程序需要每分钟轮询身份服务器以确保用户仍处于登录状态。例子:用户登录了 Asp .net 核心应用程序 1、Asp .net 核心应用程序 2 和 Javascript 应用程序。请注意,这些是金融应用程序,用户需要知道,如果他们退出一个应用程序,那么他们离开办公桌时就会退出所有应用程序。他们登录到授予每个应用程序令牌的身份服务器。然后,用户从 Asp .net 核心应用程序 1 注销。反向通道注销通知 Asp .net 核心应用程序 2 用户现在已注销,并将其也注销。JavaScript 应用程序也需要注销。我能想到的唯一方法是轮询身份服务器以查看用户是否已注销。如果他们有,那么我需要让他们退出 JavaScript 应用程序。JavaScript 计时器我创建了一个计时器,该计时器当前每秒运行一次,调用身份服务器setInterval(myTimer, 1000);function myTimer() {    mgr.getUser().then(function (user) {        //var url = config.authority + "/connect/userinfo";        var url = config.authority + "/api/user/LoggedIn";        var xhttp = new XMLHttpRequest();        xhttp.onreadystatechange = function () {            if (this.readyState == 4 && this.status == 200) {                alert(this.responseText);            }        };        xhttp.open("GET", url);        xhttp.setRequestHeader("Authorization", "Bearer " + user.access_token);        xhttp.send();    });}身份服务器端点我在身份服务器上创建了一个 api 端点,用于检查用户是否获得授权。[Route("api/[controller]")][ApiController]public class UserController : ControllerBase{    [HttpGet("LoggedIn")]    public IActionResult LoggedIn()    {        return Ok(new { IsLoggedIn = User.Identity.IsAuthenticated });    }}问题是因为这个 api 端点没有加载用户身份。 User.Identity.IsAuthenticated即使用户登录到身份服务器,它也会返回 false。如何检查用户是否仍然登录到身份服务器?是否有更好的端点可以告诉我用户是否有活动会话并已登录?我尝试了 userinfo 端点,但通过传递一个有效的访问令牌,它只会返回 true,即使用户现在已注销。有没有办法从 JavaScript 中找出身份服务器本身上的身份验证会话?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信