MVC では、これら 2 つの違いは何ですか?
それらは同一に見え、同じタイプ/クラスを返しSystem.Web.Security.RolePrincipal
ますが、微妙な点があります。
例えば。次のコードは、ClaimsPrincipal.Current によって生成されたインスタンスに対して呼び出されると、さまざまなエラーをスローします。
cp.FindFirst(ClaimTypes.Name); //{"Unable to connect to SQL Server database."} <--HUH!?
cp.Claims; //{"Value cannot be null.\r\nParameter name: username"}
上記は、代わりに cp が次の場合に機能します。
var cp = System.Web.HttpContext.Current.User
クイック ウォッチを使用してプライベート メンバーにドリルダウンすると、両方が同じ Claim ディクショナリを持っていることがわかります。ただし、何らかの理由で、返されたオブジェクトに対して呼び出されると、パブリック プロパティが吹き飛ばされます。ClaimsPrincipal.Current
ヘルプ - なぜこれが!? これは私を夢中にさせています。
=============編集==================
そろそろ寝る時間に違いない。
IPrincipal は複数の ID をサポートしています。なんらかのストアが必要です。IIdentity は ClaimsIdentity のインスタンスを返し、ストアを必要としません。
私は単に間違ったプロパティを掘り下げていました。それらの2つは、形状がほぼ同じです。同じプロパティとメソッドで、私はそれらを混乱させました。