我是网络应用程序的新手。我创建了一个自定义原则并尝试在CurrentDomain中设置它。此代码在WPF应用程序中完美运行。但是这里抛出Policy Exception “默认主体对象不能设置两次。”
var principal = new CustomPrinciple(currentIdentity);
Thread.CurrentPrincipal = principal;
AppDomain.CurrentDomain.SetThreadPrincipal(Thread.CurrentPrincipal);
我的CustomPrincple派生自ClaimsPrinciple
public class CustomPrinciple : ClaimsPrincipal
{ }
我想知道为什么我不允许在这里设置它。如何在Web应用程序中设置自定义原则。
答案 0 :(得分:2)
自定义主体应该在global.asax文件中设置所请求的请求,而不是线程。然后,您可以从HttpContext.User Property
获取自定义主体此问题中的答案详细介绍了执行此操作的最佳方法:ASP.NET MVC - Set custom IIdentity or IPrincipal
答案 1 :(得分:1)
您不能调用SetDomainPrincipal - 而是设置Thread.CurrentPrincipal和HttpContext.User
http://leastprivilege.com/2012/10/08/custom-claims-principals-in-net-4-5/