Je vois beaucoup de code comme suit pour créer un nouveau ClaimsIdentity et ClaimsPrincipalAjouter Identités multiples dans ClaimsPrincipal
var claims = new List<Claim>() {
new Claim(ClaimTypes.Name, "Me"),
new Claim(ClaimTypes.Email, "[email protected]"),
new Claim(ClaimTypes.Role, "Admin")
};
var id = new ClaimsIdentity(claims, "Forms");
var principal = new ClaimsPrincipal(id);
C'est simple et il y a beaucoup d'exemples sur le web sur la façon de le faire. Ce que je voudrais faire et je ne trouve pas beaucoup de documentation sur comment avoir plusieurs identités dans ClaimsPrincipal. ClaimsPrincipal est défini comme suit, si bien qu'il prend en charge plusieurs identités.
public class ClaimsPrincipal : IPrincipal
{
public virtual IEnumerable<ClaimsIdentity> Identities { get; }
...
}
Je pense que l'approche au-dessus de déclarer var principale = new ClaimsPrincipal (id) ne suffit pas parce que je dois être en mesure d'ajouter une identité à un ClaimsPrincipal qui peut déjà avoir une identité. Que se passe-t-il si vous avez déjà une identité dans ClaimsPrincipal et déclarez une nouvelle instance de ClaimsPrincipal? Avez-vous maintenant deux instances de ClaimsPrincipal avec des identités différentes? Mon intuition est que est le cas, donc au lieu je besoin de vérifier l'existence de la ClaimsPrincipal actuelle et y ajouter comme ceci:
ClaimsPrincipal principal;
if(System.Security.Claims.ClaimsPrincipal.Current != null)
{
principal = System.Security.Claims.ClaimsPrincipal.Current;
principal.AddIdentity(id)
}
else
{
principal = new ClaimsPrincipal(id);
}
Suis-je sur la bonne voie? Quelqu'un peut-il donner un aperçu de ce qui se passe sous le capot lorsqu'il y a plusieurs identités dans ClaimsPrincipal, si je ne suis pas sur la bonne voie, pouvez-vous proposer des suggestions sur la façon d'utiliser plusieurs identités dans ClaimsPrincipal?
duplication possible de [Comment faire pour supprimer ClaimsIdentity de ClaimsPrincipal] (http://stackoverflow.com/questions/24685719/how-to-remove-claimsidentity-from-claimsprincipal) –
Ils ne sont pas des doublons. L'un demande comment ajouter une identité, l'autre consiste à supprimer une identité. Similaire, mais il y a différentes considérations impliquées. –