ClaimsPrincipal.Par rapport HttpContext.Actuel.Utilisateur?

MVC quelle est la différence entre ces 2?

Ils ont l'air identiques, et ils ont même renvoyer le même Type/Classe System.Web.Security.RolePrincipal mais il y a des subtilités.

Par exemple. Le code suivant lance plusieurs erreurs lorsqu'il est appelé à l'encontre de l'instance générée via ClaimsPrincipal.Actuel

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

Les travaux ci-dessus lors de la cp est plutôt ceci:

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

Lors de l'exploration pour les membres privés via rapide montre que je peux voir qu'ils ont tous les deux a la même Revendication dictionnaire. Cependant, pour quelque raison que ce soit la propriété publique des coups lorsqu'il est appelé à l'encontre de l'objet renvoyé par ClaimsPrincipal.Current

Aide - pourquoi est-ce!? Cela me rend fou.

=============MODIFIER==================

Il doit être presque l'heure d'aller au lit.

IPrincipal prend en charge de multiples identités. Il nécessite une certaine sorte de magasin.
L'identité renvoie une instance de ClaimsIdentity et ne nécessite pas le magasin.

J'ai été tout simplement de forage de mauvaises propriétés. Les deux sont presque identiques dans leur forme ie. mêmes propriétés et méthodes, que j'ai confondu.

OriginalL'auteur Alwyn | 2013-10-29