HttpContext.User如何获得它的价值?

时间:2017-07-17 16:19:39

标签: c# asp.net .net

我有一个代码库,其中HttpContext.User的值经常被评估。我看不到它分配值的单个点。我认为它发生在API内部。

.NET如何获得此值?

1 个答案:

答案 0 :(得分:1)

正在创建一个IPrincipal,然后将其分配给HttpContext.Current.UserThread.CurrentPrincipal,例如:

public class MyPrincipal : IPrincipal
{
    public IIdentity Identity => new MyIdentity();

    public bool IsInRole(string role)
    {
        throw new NotImplementedException();
    }
}

public class MyIdentity : IIdentity
{
    public string Name => throw new NotImplementedException();

    public string AuthenticationType => throw new NotImplementedException();

    public bool IsAuthenticated => throw new NotImplementedException();
}

然后

var principal = new MyPrincipal();
HttpContext.Current.User = principal;
Thread.CurrentPrincipal = HttpContext.Current.User;

究竟发生这种情况取决于您的身份验证机制。

如果您的问题是因为您想发运自己的问题,请仅在您熟悉此类主题时执行此操作。安全并非无足轻重。

在大多数情况下,扩展身份(IUserStore等)可能更好,而不是创建自己的身份。

https://docs.microsoft.com/en-us/aspnet/identity/overview/extensibility/overview-of-custom-storage-providers-for-aspnet-identity