如何在asp.net中设置自定义主体

时间:2013-02-25 08:11:16

标签: c# asp.net permissions claims-based-identity iprincipal

我是网络应用程序的新手。我创建了一个自定义原则并尝试在CurrentDomain中设置它。此代码在WPF应用程序中完美运行。但是这里抛出Policy Exception “默认主体对象不能设置两次。”

 var principal = new CustomPrinciple(currentIdentity);
 Thread.CurrentPrincipal = principal;
 AppDomain.CurrentDomain.SetThreadPrincipal(Thread.CurrentPrincipal);

我的CustomPrincple派生自ClaimsPrinciple

  public class CustomPrinciple : ClaimsPrincipal
  { }

我想知道为什么我不允许在这里设置它。如何在Web应用程序中设置自定义原则。

2 个答案:

答案 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/