4

Visual Studio 2012 の既定の (インターネット) テンプレートで作成された MVC 4 アプリは、"ID とアクセス..." ウィザードを実行した後に RolePrincipal を返します。

ウィザードは、STS (実際の STS または「開発」時の STS) との信頼関係を作成します。

検査すると、 User オブジェクトのタイプはRolePrincipalになります。この結果、User.IsInRole はクレーム セットではなくローカル ロール データベースに対して解決されます。

ここに画像の説明を入力

私はClaimsPrincipalを期待していました

4

1 に答える 1

5

これは、新しいOauthサポートによるものです。それは、下にあるすべてのプロバイダーを使用することになる新しいsimplemembershipを使用しています。

初期化はWebMatrix.WebDataアセンブリで行われるため、アカウントコントローラーの属性を削除する[InitializeSimpleMembership]だけでは不十分です。

[assembly: PreApplicationStartMethod(typeof (PreApplicationStartCode), "Start")]

PreApplicationStartCode.Startは、最終的に次を呼び出します。

WebSecurity.PreAppStartInit();

それは、検査された場合、次のことを示しています。

     ...
SimpleRoleProvider simpleRoleProvider = WebSecurity.CreateDefaultSimpleRoleProvider("AspNetSqlRoleProvider", currentDefault2);
      Roles.Providers.Remove("AspNetSqlRoleProvider");
      Roles.Providers.Add((ProviderBase) simpleRoleProvider);
...

このすべての「魔法」を無効にする方法は、web.configの次の設定を使用することです。

<add key="enableSimpleMembership" value="false"/>
于 2012-11-20T01:50:36.950 に答える