ASP.NET Core 2.1 Identity:如何删除默认 UI 剃刀页面

编程代码

2个回答

写回答

欧美进口货

2025-06-23 15:55

+ 关注

etc
etc

ASP.NET Core 2.1 Identity 是一个用于处理用户认证和授权的框架,它提供了一系列默认的用户界面(UI)剃刀页面,用于管理用户注册、登录、密码重置等功能。然而,在某些情况下,我们可能需要根据自己的需求来定制这些界面,删除默认的UI剃刀页面。本文将介绍如何删除ASP.NET Core 2.1 Identity的默认UI剃刀页面,并提供相应的案例代码。

首先,我们需要创建一个新的ASP.NET Core 2.1 Web应用程序。可以使用Visual Studio来创建一个新的ASP.NET Core Web应用程序项目,选择ASP.NET Core Web应用程序模板,并确保选择了ASP.NET Core 2.1版本。创建项目后,我们需要在项目中添加ASP.NET Core Identity。可以通过NuGet包管理器控制台执行以下命令来添加Identity:

Install-Package Microsoft.AspNetcore.Identity

安装完成后,我们可以开始删除默认的UI剃刀页面。在ASP.NET Core Identity中,默认的UI剃刀页面存储在Areas/Identity/Pages/Account文件夹中。我们可以将这些文件夹及其内容从项目中删除,以删除默认的UI剃刀页面。

除了删除默认的UI剃刀页面,我们还需要创建自己的自定义UI剃刀页面。可以在项目中添加一个新的文件夹,例如Pages,用于存储自定义UI剃刀页面。在这个文件夹中,我们可以创建自己的UI剃刀页面,以满足我们的需求。

下面是一个简单的例子,展示了如何创建一个自定义的注册页面。首先,我们在Pages文件夹中创建一个名为Register.cshtml的文件。在这个文件中,我们可以使用HTML和Razor语法来定义我们自己的注册页面。

html

@page

@model RegisterModel

@{

ViewData["Title"] = "注册";

}

<h2>注册</h2>

<form method="post">

<div class="form-group">

<label asp-for="Input.EmAIl"></label>

<input asp-for="Input.EmAIl" class="form-control" />

<span asp-validation-for="Input.EmAIl" 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">注册</button>

</form>

@section Scripts {

<partial name="_ValidationScriptsPartial" />

}

在这个例子中,我们定义了一个简单的注册表单,包含电子邮件、密码和确认密码字段,并在表单中添加了一些基本的验证。

在我们创建了自己的自定义UI剃刀页面后,我们需要将它们与Identity框架集成起来。为此,我们需要在Startup.cs文件中进行一些配置。首先,我们需要添加Identity服务,并指定自定义UI剃刀页面所在的路径。可以在ConfigureServices方法中添加以下代码:

csharp

services.AddDefaultIdentity<IdentityUser>()

.AddDefaultUI()

.AddEntityFrameworkStores<ApplicationDbContext>();

在这个例子中,我们添加了默认的Identity服务,并调用了AddDefaultUI方法来指定UI剃刀页面的路径。我们还指定了ApplicationDbContext作为Identity存储的数据库上下文。

最后,我们还需要在Configure方法中添加以下代码来启用Identity:

csharp

app.UseAuthentication();

app.UseAuthorization();

通过这些配置,我们成功地删除了ASP.NET Core 2.1 Identity的默认UI剃刀页面,并添加了自己的自定义UI剃刀页面。

案例代码:

csharp

using Microsoft.AspNetcore.Identity;

using Microsoft.AspNetcore.Mvc;

using Microsoft.AspNetcore.Mvc.RazorPages;

using System.ComponentModel.DataAnnotations;

using System.Threading.Tasks;

namespace YourProject.Pages

{

public class RegisterModel : PageModel

{

private readonly UserManager<IdentityUser> _userManager;

private readonly SignInManager<IdentityUser> _signInManager;

public RegisterModel(

UserManager<IdentityUser> userManager,

SignInManager<IdentityUser> signInManager)

{

_userManager = userManager;

_signInManager = signInManager;

}

[BindProperty]

public InputModel Input { get; set; }

public class InputModel

{

[Required]

[EmAIlAddress]

public string EmAIl { get; set; }

[Required]

[DataType(DataType.Password)]

public string Password { get; set; }

[DataType(DataType.Password)]

[Compare("Password", ErrorMessage = "密码和确认密码不匹配。")]

public string ConfirmPassword { get; set; }

}

public void OnGet()

{

}

public async Task<IActionResult> OnPostAsync()

{

if (ModelState.IsValid)

{

var user = new IdentityUser { UserName = Input.EmAIl, EmAIl = Input.EmAIl };

var result = awAIt _userManager.CreateAsync(user, Input.Password);

if (result.Succeeded)

{

awAIt _signInManager.SignInAsync(user, isPersistent: false);

return RedirectToPage("/Index");

}

foreach (var error in result.Errors)

{

ModelState.AddModelError(string.Empty, error.Description);

}

}

return Page();

}

}

}

在这个例子中,我们创建了一个名为RegisterModel的Razor页面模型,用于处理注册逻辑。在这个页面模型中,我们使用了UserManager和SignInManager来处理用户的创建和登录。我们还定义了一个名为InputModel的类,用于验证用户输入的数据。

在OnPostAsync方法中,我们通过UserManager创建了一个新的用户,并使用SignInManager进行了登录。如果用户创建和登录成功,我们将重定向到首页。如果用户创建和登录失败,我们将将错误信息添加到ModelState中,以在视图中显示错误信息。

通过以上步骤,我们成功地删除了ASP.NET Core 2.1 Identity的默认UI剃刀页面,并添加了自定义的注册页面。在实际项目中,我们可以根据需要创建其他自定义UI剃刀页面,以满足特定的用户认证和授权需求。

举报有用(4)分享收藏

angel_cityz

2025-06-23 16:00

+ 关注

在ASP.NET Core 2.1中,Identity默认使用Razor页面来提供用户界面。如果你想删除或自定义这些默认的Razor页面,你可以通过以下步骤来实现:

1. 创建一个新的ASP.NET Core项目并启用Identity:如果你还没有项目,可以创建一个新的ASP.NET Core MVC项目,并在创建过程中选择启用身份验证(Authentication)。这样会自动包含Identity相关的Razor页面。

2. 使用Scaffold Identity命令:打开PowerShell或命令行工具,导航到你的项目目录,然后运行以下命令来将Identity的Razor页面添加到你的项目中:

<code><br/>dotnet aspnet-codegenerator identity -dc <YourDbContextName></code>
将替换为你的项目中用于Identity的DbContext的名称。这个命令会将所有的Identity Razor页面复制到你的项目中,这样你就可以直接编辑它们了。

3. 删除或修改Razor页面:一旦页面被添加到项目中,你就可以通过删除不需要的页面或修改现有的页面来达到你的目的。不过请注意,删除某些页面可能会导致你的应用程序无法正常工作,特别是如果你没有替换它们或者提供相应的功能实现。

4. 清理不必要的文件:如果你删除了某些页面,可能还需要清理相关的文件和引用。确保你的项目仍然可以正常编译和运行。

请注意,直接删除可能导致一些功能无法正常工作,因此在删除前确保你知道每个页面的作用,并且你有相应的替代解决方案。如果你只是想自定义这些页面,而不删除它们,那么你只需要编辑这些页面的Razor代码即可。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号