我有一个身份服务器 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 中找出身份服务器本身上的身份验证会话?
添加回答
举报
0/150
提交
取消