2

私はWebアプリケーションが初めてです。カスタム プリンシパルを作成し、CurrentDomain に設定しようとしています。このコードは、WPF アプリケーションで完全に機能します。ただし、ここではポリシー例外「デフォルトのプリンシパル オブジェクトを 2 回設定することはできません」がスローされます。

 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 - カスタム IIdentity または IPrincipal の設定

于 2013-02-25T08:26:23.390 に答える
1

SetDomainPrincipal を cal することは許可されていません - 代わりに Thread.CurrentPrincipal と HttpContext.User を設定してください

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

于 2013-02-25T12:39:55.347 に答える