【发布时间】:2018-06-18 21:39:03
【问题描述】:
在 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 页面。
AuthorizePage 可以采用第二个参数,该参数可用于定义将使用的策略,以确定当前用户是否可以看到指定的页面。我是这样使用的:
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdministratorRole", policy => policy.RequireRole("Admin"));
});
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Index", "RequireAdministratorRole");
});
问题是它仍然不起作用。就像我没有定义策略一样。当我登录时,我可以看到该页面,当我没有登录时,它会将我重定向到登录表单。
为了让它发挥作用,我还必须做些什么吗?
【问题讨论】:
-
如果它表现得像你没有定义策略,那么也许你没有添加行来使用身份验证:
app.UseAuthentication(); -
我用过。我真的不知道它有什么问题。我可能必须添加其他东西才能激活它。
标签: asp.net-core asp.net-core-2.0 razor-pages