Je cherche un moyen "facile" d'ajouter automatiquement des revendications de rôle à l'utilisateur local afin de tester ma logique d'autorisation; c'est-à-dire vouloir ajouter des revendications spécifiques à l'utilisateur local avant qu'elles ne soient autorisées par mes contrôleurs..NET Core MVC ajoute une revendication de rôle à l'utilisateur local en cours de développement avant l'autorisation
J'ai appris que dans le passé quelque chose semblable à cela pourrait être fait pour les contrôleurs:
#if DEBUG
protected override void OnAuthorization(AuthorizationContext filterContext)
{
var roles = new[] { "role-under-test"};
HttpContext.User = new GenericPrincipal(new GenericIdentity("DebugUser"), roles);
base.OnAuthorization(filterContext);
}
#endif
Pourtant, c'était avant de base .NET qui est ce que je travaille maintenant. Lentement j'ai travaillé mon chemin vers le code présenté ci-dessous, qui semble fonctionner, mais est clairement beaucoup plus compliqué que l'exemple ci-dessus. Donc, ma question est de savoir si quelqu'un connaît un meilleur - plus facile - moyen d'y parvenir?
L'attribut d'autorisation personnalisée:
public class CustomAuthAttribute : RolesAuthorizationRequirement {
public CustomAuthAttribute(IEnumerable<string> allowedRoles) : base(allowedRoles) { }
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, RolesAuthorizationRequirement requirement) {
#if DEBUG
context.User.AddIdentity(new ClaimsIdentity(new GenericIdentity("DebugUser"), new[] {
new Claim(ClaimsIdentity.DefaultRoleClaimType, "users"),
new Claim(ClaimsIdentity.DefaultRoleClaimType, "admins")
}));
#endif
return base.HandleRequirementAsync(context, requirement);
}
}
Dans Startup.cs
public void ConfigureServices(IServiceCollection services) {
// ...
services.AddAuthorization(options =>
options.AddPolicy("UsersAndAdmins",
policy => policy.AddRequirements(new CustomAuthAttribute(new []{"users", "admins"}))));
}
Et puis l'utiliser dans les contrôleurs:
[Authorize(Policy = "UsersAndAdmins")]
public class HomeController : Controller {
// ...
Avez-vous vérifié https: // channel9.msdn.com/ Blogs/Seth-Juarez/Advanced-aspNET-Core-Autorisation-avec-B arry-Dorrans sur le canal 9. Il semble qu'ils vous aideraient beaucoup. C'est une série de 2 vidéos, mais il y a beaucoup de bonnes infos là-dedans. c'est en fait le deuxième des deux –