# 如何为MVC / Razor页面应用程序自定义登录页面 当你使用[应用程序启动模板](../Startup-Templates/Application.md)创建了一个新的应用程序, 登录页面的源代码并不在你的解决方案中,所以你不能直接更改. 它来自[账户模块](../Modules/Account.md),使用[NuGet包](https://www.nuget.org/packages/Volo.Abp.Account.Web)引用. 本文介绍了如何为自己的应用程序自定义登录页面. ## 创建登录 PageModel 创建一个新的类继承账户模块的[LoginModel](https://github.com/abpframework/abp/blob/037ef9abe024c03c1f89ab6c933710bcfe3f5c93/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs). ````csharp public class CustomLoginModel : LoginModel { public CustomLoginModel( Microsoft.AspNetCore.Authentication.IAuthenticationSchemeProvider schemeProvider, Microsoft.Extensions.Options.IOptions accountOptions) : base(schemeProvider, accountOptions) { } } ```` > 在这里命令约定很重要. 如果你的类名不是以 `LoginModel` 结束,你需要手动在[依赖注入](../Dependency-Injection.md)系统替换 `LoginModel`. 然后你可以覆盖任何方法并添加用户界面需要的新方法和属性. ## 重写登录页面UI 在 **Pages** 目录下创建名为 **Account** 的文件夹,并在这个文件夹中创建 `Login.cshtml` , 它会自动覆盖账户模块的页面文件. 自定义页面一个很好的开始是复制它的源代码. [点击这里](https://github.com/abpframework/abp/blob/dev/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml)找到登录页面的源码. 在编写本文档时,源代码如下: ````xml @page @using Volo.Abp.Account.Settings @using Volo.Abp.Settings @model Acme.BookStore.Web.Pages.Account.CustomLoginModel @inject Volo.Abp.Settings.ISettingProvider SettingProvider @if (Model.EnableLocalLogin) {

@L["Login"]

@if (await SettingProvider.IsTrueAsync(AccountSettingNames.IsSelfRegistrationEnabled)) { @L["AreYouANewUser"] @L["Register"] }
@L["Login"]
} @if (Model.VisibleExternalProviders.Any()) {

@L["UseAnotherServiceToLogIn"]

@foreach (var provider in Model.VisibleExternalProviders) { }
} @if (!Model.EnableLocalLogin && !Model.VisibleExternalProviders.Any()) {
@L["InvalidLoginRequest"] @L["ThereAreNoLoginSchemesConfiguredForThisClient"]
} ```` 只需更改 `@model` 为 `Acme.BookStore.Web.Pages.Account.CustomLoginModel` 使用自定义的 `PageModel` 类. 你可以做任何应用程序需要的更改. ## 本文的源代码 你可以在[这里](https://github.com/abpframework/abp-samples/tree/master/Authentication-Customization)找到已完成的示例源码. ## 另请参阅 * [ASP.NET Core (MVC / Razor Pages) 用户界面自定义指南](../UI/AspNetCore/Customization-User-Interface.md).