asp.net-core - custom - authorize roles
¿Cómo agregar un `AuthorizeFilter` o` AuthorizeAttribute` global en ASP.NET Core? (3)
En ASP.NET MVC 4 y más abajo, solo agregamos lo siguiente en Global.asax:
GlobalFilters.Filters.Add(new AuthorizeAttribute() { Roles = "Admin, SuperUser" });
¿Alguna idea de cómo hacer esto en ASP.NET Core MVC ?
De los docs :
Puede registrar un filtro globalmente (para todos los controladores y acciones) agregándolo a la colección
MvcOptions.Filters
en el métodoConfigureServices
en la clase deStartup
:
No puede agregar AuthorizeAttribute
en MvcOptions.Filters
. Cree una AuthorizationPolicy
y use AuthorizeFilter
:
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireRole("Admin", "SuperUser")
.Build();
services.AddMvc(options =>
{
options.Filters.Add(new AuthorizeFilter(policy));
});
En caso de que esté utilizando el sabor de Razor Page de ASP.NET Core 2.0 , podría agregar filtros globales de la siguiente manera:
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeFolder("/"); // Require users to be authenticated.
options.Conventions.AuthorizeFolder("/", "YourPolicyName"); // Require a policy to be full filled globally.
});
También puede utilizar el siguiente código. Esto está utilizando un tipo en lugar de una instancia.
services.AddMvc(options =>
{
options.Filters.Add(typeof(AuthorizeFilter));
});
Y utilizando la inyección de dependencia puede resolver la política Objeto.