认证角色数据查询逻辑
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目录提供角色信息