我有一个代码库,其中HttpContext.User
的值经常被评估。我看不到它分配值的单个点。我认为它发生在API内部。
.NET如何获得此值?
答案 0 :(得分:1)
正在创建一个IPrincipal
,然后将其分配给HttpContext.Current.User
和Thread.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
等)可能更好,而不是创建自己的身份。