ASP.NET Core Identity ログイン画面のカスタマイズ

IdentityでMVCにログイン画面を追加出来ましたが、ユーザーIDがメールアドレス(user01@raspberry.pi)なのでユーザー名(user01)に変更したい。
https://qiita.com/namikitakeo/items/0de598b8e43eb5b1ff94

Identityをスキャフォールディングします。
https://www.slideshare.net/YutaMatsumura/aspnet-core-2x-identity

```
$ dotnet aspnet-codegenerator identity -dc myop.Models.ApplicationDbContext
```

Input.EmailをInput.UserNameに変更します。あわせてLogin.cshtml.csも修正が必要です。

```Areas/Identity/Pages/Account/Login.cshtml
@page
@model LoginModel

@{
    ViewData["Title"] = "Log in";
}

<h1>@ViewData["Title"]</h1>
<div class="row">
    <div class="col-md-4">
        <section>
            <form id="account" method="post">
                <h4>Use a local account to log in.</h4>
                <hr />
                <div asp-validation-summary="All" class="text-danger"></div>
                <div class="form-group">
                    <label asp-for="Input.UserName"></label>
                    <input asp-for="Input.UserName" class="form-control" />
                    <span asp-validation-for="Input.UserName" class="text-danger"></span>
                </div>
                <div class="form-group">
                    <label asp-for="Input.Password"></label>
                    <input asp-for="Input.Password" class="form-control" />
                    <span asp-validation-for="Input.Password" class="text-danger"></span>
                </div>
                <div class="form-group">
                    <div class="checkbox">
                        <label asp-for="Input.RememberMe">
                            <input asp-for="Input.RememberMe" />
                            @Html.DisplayNameFor(m => m.Input.RememberMe)
                        </label>
                    </div>
                </div>
                <div class="form-group">
                    <button type="submit" class="btn btn-primary">Log in</button>
                </div>
                <div class="form-group">
                    <!-- p>
                        <a id="forgot-password" asp-page="./ForgotPassword">Forgot your password?</a>
                    </p -->
                    <p>
                        <a asp-page="./Register" asp-route-returnUrl="@Model.ReturnUrl">Register as a new user</a>
                    </p>
                    <!-- p>
                        <a id="resend-confirmation" asp-page="./ResendEmailConfirmation">Resend email confirmation</a>
                    </p -->
                </div>
            </form>
        </section>
    </div>
    <div class="col-md-6 col-md-offset-2">
        <section>
            <h4>Use another service to log in.</h4>
            <hr />
            @{
                if ((Model.ExternalLogins?.Count ?? 0) == 0)
                {
                    <div>
                        <p>
                            There are no external authentication services configured. See <a href="https://go.microsoft.com/fwlink/?LinkID=532715">this article</a>
                            for details on setting up this ASP.NET application to support logging in via external services.
                        </p>
                    </div>
                }
                else
                {
                    <form id="external-account" asp-page="./ExternalLogin" asp-route-returnUrl="@Model.ReturnUrl" method="post" class="form-horizontal">
                        <div>
                            <p>
                                @foreach (var provider in Model.ExternalLogins)
                                {
                                    <button type="submit" class="btn btn-primary" name="provider" value="@provider.Name" title="Log in using your @provider.DisplayName account">@provider.DisplayName</button>
                                }
                            </p>
                        </div>
                    </form>
                }
            }
        </section>
    </div>
</div>

@section Scripts {
    <partial name="_ValidationScriptsPartial" />
}
```

Input.EmailをInput.UserNameに変更します。あわせてRegister.cshtml.csも修正が必要です。

```Areas/Identity/Pages/Account/Register.cshtml
@page
@model RegisterModel
@{
    ViewData["Title"] = "Register";
}

<h1>@ViewData["Title"]</h1>

<div class="row">
    <div class="col-md-4">
        <form asp-route-returnUrl="@Model.ReturnUrl" method="post">
            <h4>Create a new account.</h4>
            <hr />
            <div asp-validation-summary="All" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="Input.UserName"></label>
                <input asp-for="Input.UserName" class="form-control" />
                <span asp-validation-for="Input.UserName" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Input.Password"></label>
                <input asp-for="Input.Password" class="form-control" />
                <span asp-validation-for="Input.Password" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Input.ConfirmPassword"></label>
                <input asp-for="Input.ConfirmPassword" class="form-control" />
                <span asp-validation-for="Input.ConfirmPassword" class="text-danger"></span>
            </div>
            <button type="submit" class="btn btn-primary">Register</button>
        </form>
    </div>
    <div class="col-md-6 col-md-offset-2">
        <section>
            <h4>Use another service to register.</h4>
            <hr />
            @{
                if ((Model.ExternalLogins?.Count ?? 0) == 0)
                {
                    <div>
                        <p>
                            There are no external authentication services configured. See <a href="https://go.microsoft.com/fwlink/?LinkID=532715">this article</a>
                            for details on setting up this ASP.NET application to support logging in via external services.
                        </p>
                    </div>
                }
                else
                {
                    <form id="external-account" asp-page="./ExternalLogin" asp-route-returnUrl="@Model.ReturnUrl" method="post" class="form-horizontal">
                        <div>
                            <p>
                                @foreach (var provider in Model.ExternalLogins)
                                {
                                    <button type="submit" class="btn btn-primary" name="provider" value="@provider.Name" title="Log in using your @provider.DisplayName account">@provider.DisplayName</button>
                                }
                            </p>
                        </div>
                    </form>
                }
            }
        </section>
    </div>
</div>

@section Scripts {
    <partial name="_ValidationScriptsPartial" />
}
```

SQLite3 CLIで確認してみます。
https://qiita.com/aki3061/items/f6450bdf3675418f0ef0

```
% sqlite3 app.db 
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.

sqlite> .tables
AspNetRoleClaims       AspNetUserRoles        Codes                
AspNetRoles            AspNetUserTokens       Tokens               
AspNetUserClaims       AspNetUsers            __EFMigrationsHistory
AspNetUserLogins       Clients              

sqlite> select * from AspNetUsers;
a225ff8f-b5f0-4642-b121-b83a5a24ccd6|0|f679b63a-a20b-43a7-bce7-732b41ad1f1f||0|1|||USER01|AQAAAAEAACcQAAAAENSroFqdRMCx2KXhdL6AYRCJZv8gI5uvJN3pSvV3nIYBS/LQupOnPunWxFgW+JM/LQ==||0|TODFM4APPYGCTS6HUA5CJDHBLLCELSAQ|0|user01
2b916bd3-6d90-42b3-a429-ddeda7fa47fa|0|b299e030-f386-40b4-a152-7aeee466b57b||0|1|||USER02|AQAAAAEAACcQAAAAEK/K4m/sNck9Oz8GcOB3btJlY7C4k8zT/57XXkceL3FpbFXSoOZEMt91aLfI05aJOQ==||0|OUYX2V55TNGXSL2SD2OJMRS7JKFCVACT|0|user02
23ad1a48-fb52-419a-80c2-399b4ff0dc39|0|a88b87f8-fd92-4759-bc1f-f0d15f6740f4||0|1|||USER03|AQAAAAEAACcQAAAAED1w8pPzc64DbCccLZBk5yOUmp9TVYsv3sNofHgMWu0LMCb6k6GbWjm5ytSSZUJQ5A==||0|YVGFWYXXIQO5XTUMQBLUECIERPRAA5T2|0|user03

sqlite> .exit
```