在 asp.net core 中很容易定义页面和文件夹的剃须刀页面授权,如下所示:
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
我的问题是我想在我的项目中使用角色,但我找不到定义允许哪些角色查看页面内容的方法。
我尝试使用 Authorize 属性,但它不适用于 Razor Pages。
AuthorizePage 可以采用第二个参数,该参数可用于定义将使用的策略,以确定当前用户是否可以看到指定的页面。我使用它如下:
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdministratorRole", policy => policy.RequireRole("Admin"));
});
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Index", "RequireAdministratorRole");
});
问题是它仍然不起作用。就像我没有定义策略一样。当我登录时,我可以看到该页面,当我没有登录时,它会将我重定向到登录表单。
为了让它工作,我还需要做些什么吗?