要在所有Identity页面上覆盖布局,可以按照以下步骤进行操作:
Views/Shared
文件夹下创建一个名为_LayoutIdentity.cshtml
的文件,并在其中定义自己的布局样式。
@ViewData["Title"] - My Application
@RenderSection("Styles", required: false)
My Application
@RenderBody()
@RenderSection("Scripts", required: false)
Startup.cs
文件中的ConfigureServices
方法中,添加以下代码来指定使用自定义布局视图:services.ConfigureApplicationCookie(options =>
{
options.LoginPath = "/Identity/Account/Login";
options.LogoutPath = "/Identity/Account/Logout";
options.AccessDeniedPath = "/Identity/Account/AccessDenied";
options.Events = new CookieAuthenticationEvents
{
OnRedirectToLogin = ctx =>
{
if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == 200)
{
ctx.Response.StatusCode = 401;
}
else
{
ctx.Response.Redirect(ctx.RedirectUri);
}
return Task.CompletedTask;
}
};
options.Cookie.Name = "YourAppCookieName";
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
options.SlidingExpiration = true;
});
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeFolder("/Account/Manage");
options.Conventions.AuthorizePage("/Account/Logout");
})
.AddRazorPagesOptions(options =>
{
options.Conventions.AddAreaPageRoute("Identity", "/Account/Login", "/Account/Login");
options.Conventions.AddAreaPageRoute("Identity", "/Account/Register", "/Account/Register");
})
.AddRazorPagesOptions(options =>
{
options.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
})
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Error", "{*url}");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
.AddRazorRuntimeCompilation();
Views/Shared
文件夹下,找到名为_ViewStart.cshtml
的文件,将其内容更改为以下内容:@{
Layout = "_LayoutIdentity";
}
通过按照以上步骤操作,您将能够在所有Identity页面上使用自定义布局。