【发布时间】:2021-01-30 22:32:42
【问题描述】:
使用 .net Core 3.1,我按照官方文档 (Scaffold Identity in ASP.NET Core projects) 中的说明将 Identity 搭建到我的空 Web 项目中。
我正在使用基于声明的授权。在我的 Startup.cs 文件中,我创建了以下策略:
services.AddAuthorization(options =>
{
options.AddPolicy("Admin", policy =>
{
policy.RequireClaim("CanListUsers", true.ToString());
policy.RequireClaim("CanEditUsers", true.ToString());
});
});
然后,我立即对某些 区域 页面进行门控,如下所示:
services.AddRazorPages(options =>
{
options.Conventions.AuthorizeAreaPage("Identity", "/Account/Register", "Admin");
options.Conventions.AuthorizeAreaFolder("Identity", "/Account/Manage");
});
我只想关闭对“管理员”用户的注册。我想只允许登录用户管理帐户。
我无法进入注册页面。我仍然可以在没有登录用户的情况下访问它。为什么不呢?
另一方面,奇怪的是,如果我删除授权约定/Account/Manage,页面会将匿名用户重定向到登录。这是怎么回事?
【问题讨论】:
标签: c# asp.net-core .net-core asp.net-identity razor-pages