Следующее работает для меня и использует авторизацию на основе ролей.Мне все еще приходилось создавать некоторые страницы, но только те, которые нуждались в обновлении.
Страницы входа в систему и регистрации Scaffold
Я только защищал страницы входа и регистрации, используя следующие:
Идентификация скаффолда в проекте Razor с авторизацией
Это также полезно.Вот демонстрация, демонстрирующая выше:
Что нового в веб-разработке с ASP.NET Core 2.1: сборка 2018
Login.cshtml - я прокомментировал следующее.
<p>
<a asp-page="./Register" asp-route-returnUrl="@Model.ReturnUrl">Register as a new user</a>
</p>
Register.cshtml.cs - я удалил атрибут AllowAnonymous
<s>[AllowAnonymous]</s>
public class RegisterModel : PageModel
Startup.cs - ConfigureServices
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlite(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<IdentityUser, IdentityRole>(options =>{
options.SignIn.RequireConfirmedEmail = true;
})
.AddDefaultUI()
.AddDefaultTokenProviders()
.AddEntityFrameworkStores<ApplicationDbContext>();
// Register no-op EmailSender used by account confirmation and password reset during development
// For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=532713
services.AddSingleton<Microsoft.AspNetCore.Identity.UI.Services.IEmailSender, EmailSender>();
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdministratorRole",
policy => policy.RequireRole("Admin"));
options.DefaultPolicy = options.GetPolicy("RequireAdministratorRole");
});
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/About", "RequireAdministratorRole");
options.Conventions.AuthorizeAreaPage("Identity", "/Account/Register");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}