Ich bin auf der Suche nach einem "einfachen" Weg, um Rollenansprüche an den lokalen Benutzer automatisch hinzufügen, um meine Autorisierungslogik zu testen; das heißt, dem lokalen Benutzer bestimmte Ansprüche hinzufügen zu wollen, bevor sie von meinen Controllern autorisiert werden..NET Core MVC hinzufügen Rolle Anspruch an lokalen Benutzer in der Entwicklung vor der Autorisierung
Ich habe gelernt, dass in der Vergangenheit so etwas wie dies für die Controller getan werden könnte:
#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
Noch zu .NET Kern vor, dass war das, was in jetzt arbeite ich. Langsam habe ich mich an den unten dargestellten Code gewagt, der zu funktionieren scheint, aber im Vergleich zum obigen Beispiel ist es eindeutig viel mühsamer. Meine Frage ist also, ob jemand einen besseren - einfacheren - Weg kennt, dies zu erreichen?
Das benutzerdefinierten Berechtigungs Attribut:
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);
}
}
In Startup.cs
public void ConfigureServices(IServiceCollection services) {
// ...
services.AddAuthorization(options =>
options.AddPolicy("UsersAndAdmins",
policy => policy.AddRequirements(new CustomAuthAttribute(new []{"users", "admins"}))));
}
Und dann in den Controllern es:
[Authorize(Policy = "UsersAndAdmins")]
public class HomeController : Controller {
// ...
Haben Sie https: // channel9.msdn.com/ Blogs/Seth-Juarez/Erweiterte aspNET-Core-Authorization-with-B ausgecheckt Arry-Dorrans auf Kanal 9. Es scheint, als würden sie dir sehr helfen. Es ist eine 2-Video-Serie, aber es gibt viele tolle Infos drin. das ist eigentlich der zweite der beiden –