ASP.NET Core 认证角色数据查询逻辑

认证角色数据查询逻辑

public async Task<User> GetUserAuthenticateAsync()
{
    HttpContext httpContext = _httpContextAccessor.HttpContext;
    if (httpContext == null)
    {
        throw new InvalidOperationException("HttpContext is not available.");
    }
    var authenticateResult = await httpContext.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme);
    if (authenticateResult.Succeeded)
    {
        var claimsPrincipal = authenticateResult.Principal;
        // 现在您可以使用claimsPrincipal来获取用户的声明信息
        var username = claimsPrincipal.FindFirst(ClaimTypes.Name)?.Value;
        return await ValidateUserAsync(username);
    }
    else
    {
        // 处理认证失败的情况
        throw new InvalidOperationException("用户不存在");
    }
}

关键要点

  1. AuthenticateAsync 为 HttpContext 的扩展方法
  2. 在使用中直接使用 HttpContext.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme) 会显示接口不存在
  3. 使用 HttpContext httpContext = _httpContextAccessor.HttpContext; 可获取 HttpContext 实体
  4. 此接口为分类展示 Cos 目录提供角色信息
📥 导出 Markdown