2

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

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

我的 CustomPrincple 来自 ClaimsPrinciple

  public class CustomPrinciple : ClaimsPrincipal
  { }

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

4

2 回答 2

2

自定义主体应在 global.asax 文件中设置为发出的请求,而不是线程。然后您从HttpContext.User 属性中获取自定义主体

这个问题中的答案详细说明了最好的方法:ASP.NET MVC - Set custom IIdentity or IPrincipal

于 2013-02-25T08:26:23.390 回答
1

您不允许调用 SetDomainPrincipal - 而是设置 Thread.CurrentPrincipal 和 HttpContext.User

http://leastprivilege.com/2012/10/08/custom-claims-principals-in-net-4-5/

于 2013-02-25T12:39:55.347 回答