ASP.NET Core Identity - 在浏览器关闭时结束会话并处理该事件 在ASP.NET Core Identity中,您可以配置会话以在浏览器关闭时自动结束。为此,您需要使用一些JavaScript代码来捕获浏览器关闭事件,并在事件发生时调
创始人
2024-09-15 03:30:28
0

谢谢您的问题!下面是一个示例解决方案,演示了如何在ASP.NET Core Identity中在浏览器关闭时结束会话并处理该事件。

首先,创建一个名为AccountController的控制器,用于处理结束会话请求。确保在Startup.cs文件中添加身份验证服务和身份验证中间件。

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;

[Authorize]
public class AccountController : Controller
{
    private readonly SignInManager _signInManager;

    public AccountController(SignInManager signInManager)
    {
        _signInManager = signInManager;
    }

    [HttpPost]
    public async Task EndSession()
    {
        await _signInManager.SignOutAsync(); // 结束用户的会话

        return Ok();
    }
}

接下来,创建一个JavaScript函数来触发结束会话请求。

function endSession() {
  fetch('/Account/EndSession', {
    method: 'POST',
    credentials: 'same-origin',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({})
  });
}

然后,在需要使用此功能的页面中,将以下代码添加到JavaScript文件或