Я следую этим руководствам:
- Scaffold Identity в проект MVC без существующей авторизации
- Создать полный источник пользовательского интерфейса идентификации
Следуя первому руководству, я получаю то, что ожидаю от страниц Identity / Account / Manage:
Однако после выполнения 2-го руководства макет нарушается. Боковое меню отсутствует. Приложение больше не находит Areas/Identity/Pages/Account/Manage/_Layout.cshtml
, и я не понимаю, почему.
Это git diff.
namespace WebIdentity.Areas.Identity
{
public class IdentityHostingStartup : IHostingStartup
{
public void Configure(IWebHostBuilder builder)
{
builder.ConfigureServices((context, services) => {
services.AddDbContext<IdentityDbContext>(options =>
options.UseSqlServer(
context.Configuration.GetConnectionString("IdentityDbContextConnection")));
- services.AddDefaultIdentity<User>(options => options.SignIn.RequireConfirmedAccount = true)
- .AddEntityFrameworkStores<IdentityDbContext>();
+ services
+ .AddIdentity<User, IdentityRole>(options => options.SignIn.RequireConfirmedAccount = true)
+ .AddEntityFrameworkStores<IdentityDbContext>()
+ .AddDefaultTokenProviders();
+
+ services
+ .AddMvc()
+ .AddRazorPagesOptions(options =>
+ {
+ options.Conventions.AuthorizeAreaFolder("Identity", "/Account/Manage");
+ options.Conventions.AuthorizeAreaPage("Identity", "/Account/Logout");
+ });
+
+ services.ConfigureApplicationCookie(options =>
+ {
+ options.LoginPath = $"/Identity/Account/Login";
+ options.LogoutPath = $"/Identity/Account/Logout";
+ options.AccessDeniedPath = $"/Identity/Account/AccessDenied";
+ });
+
+ services.AddSingleton<IEmailSender, EmailSender>();
});
}
}