Role Based Folder Authorization

Setup role based Folder/AreaFolder authorization in ASP.Net Core Razor pages

03-10-2018

Authorizing razor pages individually using [Authorize(Role="Admins")] attribute requires using the attribute on each page individually, a better approach is to manage authorizations in startup class for folders or area folders.

1. Register role based policies in startup.cs under ConfigureServies method:


services.AddAuthorization(ops =>
{
	ops.AddPolicy("Admins", policy =>
	{
		policy.RequireRole("Admins");
	});

	ops.AddPolicy("Users", policy =>
	{
		policy.RequireRole("Users");
	});
});

2. Configure folder authorization:


services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            .AddRazorPagesOptions(ops =>
            {
                ops.Conventions.Add(new GlobalTemplatePageRouteModelConvention());
                ops.Conventions.AuthorizeAreaFolder("AreaName", "/FolderPath/", "Admins");
                ops.Conventions.AuthorizeFolder("/FolderPath/", "Users");
            });
Contact form