Je l'ai fait dans mon projet rc1 comme:
User.Claims.ElementAt(#).Value
Mais après être passé à rtm, cela ne fonctionnerait plus. Lorsque je débogue la vue Razor, l'objet a la même apparence mais User.Claims est juste vide. Aucune idée de la raison.
En supposant que vous ayez des réclamations attachées au principal actuel. Dans votre vue Razor:
@((ClaimsIdentity) User.Identity)
Cela vous donnera accès à la ClaimsIdentity de l'utilisateur actuel. Dans le but de maintenir la propreté de vos revendications, vous pouvez créer une méthode d'extension pour rechercher des revendications.
public static string GetSpecificClaim(this ClaimsIdentity claimsIdentity, string claimType)
{
var claim = claimsIdentity.Claims.FirstOrDefault(x => x.Type == claimType);
return (claim != null) ? claim.Value : string.Empty;
}
Ensuite, vous pouvez simplement accéder à la réclamation que vous souhaitez avec:
@((ClaimsIdentity) User.Identity).GetSpecificClaim("someclaimtype")
J'espère que cela t'aides.
La recherche rapide de l'identité des revendications dans la vue du rasoir a abouti à une question et une réponse similaires: MVC 5 Access Claims Identity User Data
Dans Core 3.0, utilisez l'autorisation de vue
Startup.cs
services.AddAuthorization(options =>
{
options.AddPolicy("Claim_Name", x => x.RequireClaim("Claim_Name"));
});
Puis à l'intérieur de l'interface utilisateur
if ((AuthorizationService.AuthorizeAsync(User, "Claim_Name")).Result.Succeeded){
//show ui element
}