如何在c sharp中获得控制器外部的身份验证声明



在我的控制器中,我可以使用user属性访问经过身份验证的用户详细信息:

var currentUserClaims = User.Claims;

我的解决方案中还有另一个项目需要检查用户声明。我已经尝试使用这个解决方案,我从以下链接得到-如何获得User.Identity在控制器外工作:

HttpContext.Current.User.Identity

但它表示HttpContext在当前上下文中不存在。它建议安装Microsoft.AspNetCore.Http.Abstraction。当我这样做时,它说Current不是HttpContext的一部分。

有任何关于我如何在另一个项目中检索控制器之外的用户声明的提示吗?

安装该软件包后,您可以在DI:中注册IHttpContextAccessor

services.AddHttpContextAccessor();

然后你把它注射到任何你需要的地方

public class MyClassWhichNeedsHttpContext
{
public readonly IHttpContextAccessor accessor;
public MyClassWhichNeedsHttpContext(IHttpContextAccessor accessor)
{
this.accessor = accessor;
}
public void MethodWhichUsesIt()
{
var httpContext = accessor.HttpContext;
var user = httpContext.User;
}
}

更多信息:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/http-context?view=aspnetcore-5.0

尝试使用IHttpContextAccessor。尝试在构造函数中将此接口作为依赖项获取。然后您应该能够访问上下文。示例:

internal class Example : IExample
{
private readonly IHttpContextAccessor _httpContextAccessor;
public Example(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public void Foo()
{
var claims = _httpContextAccessor.HttpContext.User.Claims;
...
}
}

最新更新