认证角色数据查询逻辑
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("用户不存在");
}
}
关键要点
AuthenticateAsync 为 HttpContext 的扩展方法
- 在使用中直接使用
HttpContext.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme) 会显示接口不存在
- 使用
HttpContext httpContext = _httpContextAccessor.HttpContext; 可获取 HttpContext 实体
- 此接口为分类展示 Cos 目录提供角色信息