8

In MVC, was ist der Unterschied zwischen diesen 2?ClaimsPrincipal.Current vs HttpContext.Current.User?

Sie sehen identisch aus, und sie geben sogar den gleichen Typ/Klasse System.Web.Security.RolePrincipal zurück, aber es gibt Feinheiten.

Eg. Der folgende Code führt verschiedene Fehler, wenn sie gegen die Instanz erzeugt über ClaimsPrincipal.Current genannt

cp.FindFirst(ClaimTypes.Name); //{"Unable to connect to SQL Server database."} <--HUH!? 
cp.Claims; //{"Value cannot be null.\r\nParameter name: username"} 

Die oben genannten Arbeiten, wenn cp diese stattdessen:

var cp = System.Web.HttpContext.Current.User 

Wenn bis zu den privaten Mitgliedern über schnelle Uhr I Bohren kann sehen, dass sie beide das gleiche Anspruchswörterbuch haben. Aus welchem ​​Grund auch immer das öffentliche Eigentum bläst, wenn es gegen das Objekt zurückgerufen wird, das von ClaimsPrincipal.Current

Hilfe zurückgegeben wird - Hilfe warum? Das macht mich verrückt.

============= EDIT ==================

Es muss fast Zeit ins Bett zu gehen.

IPrincipal unterstützt mehrere Identitäten. Es erfordert eine Art von Geschäft. IIdentity gibt eine Instanz von ClaimsIdentity zurück und benötigt den Store nicht.

Ich bohrte einfach die falschen Eigenschaften. Die zwei von ihnen sind in ihrer Form fast identisch, dh. gleiche Eigenschaften und Methoden, dass ich sie verwirrt habe.

Antwort