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.
Dank Ich brauche eine gute Lektüre davon. – Alwyn