如何将 ASP.NET 核心身份添加到现有的核心 mvc 项目中?



我已经在带有 CLI 的 Mac 上启动了我的 dotnet core mvc 项目,没有标识,现在我想添加此功能。到目前为止,我知道的唯一选择是通过以下方式创建一个新项目

dotnet new mvc --auth

有没有更好的方法向现有项目添加标识?我希望有一个"dotnet new"命令。

根据 learn.microsoft.com,您可以使用aspnet代码生成器将标识基架到现有的MVC项目中。

1( 如果您以前没有安装 ASP.NET Core 脚手架,请立即安装:

dotnet tool install -g dotnet-aspnet-codegenerator

2( 将包引用添加到项目 (*.csproj( 文件中 Microsoft.VisualStudio.Web.CodeGeneration.Design。在项目目录中运行以下命令:

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet restore

3( 运行以下命令以列出标识基架选项:

dotnet aspnet-codegenerator identity -h

4( 在项目文件夹中,使用所需的选项运行标识基架。例如,若要使用默认 UI 和最小文件数设置标识,请运行以下命令:

dotnet aspnet-codegenerator identity --useDefaultUI

5( 生成的标识数据库代码需要实体框架核心迁移。创建迁移并更新数据库。例如,运行以下命令:

dotnet ef migrations add CreateIdentitySchema
dotnet ef database update

6(在使用静态文件后调用使用身份验证

public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAuthentication(); // <-- add this line
app.UseMvcWithDefaultRoute();
}
}

需要在 VS Code 中通过 CLI 添加此 NuGet 包:

dotnet add package Microsoft.AspNetCore.Identity 

如果你想要标准的UI页面,你可以安装这个包,其中包含嵌入的所有内容:

dotnet add package Microsoft.AspNetCore.Identity.UI

可以通过 NuGet 包管理器对此进行管理:

工具 ->NuGet 包管理器 -> 控制台

$安装包 Microsoft.aspNet.Identity.Core

我正在遵循此 MS 教程,但遇到了一些问题,所以我在这里列出了它们以及如何修复它们的解决方案。

我的连接字符串有问题。这是我的连接字符串在appsettings.json年底的样子,因为我的 MS SQL 服务器正在特定端口上工作:

"AuthDbContextConnection": "Data Source=xxx.xxx.xxx.xxx,10008;Initial Catalog=dbName;Persist Security Info=True;User ID=sqluser;Password=sqlpassword"

xxx.xxx.xxx.xxx在这里而不是 IP 地址。

我无法安装Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore所以我在这里的数据包页面上为我的项目(.NET Core 3.x(安装了最新版本,就是这个。所以我安装了软件包:

Install-Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore -Version 3.1.10

之后我跑了

Add-Migration CreateIdentitySchema -Context AuthDbContext

如果没有上下文参数,它就不起作用。 这创建了 2 个我单独运行的迁移:

Update-Database 20201217102436_InitialCreate -Context AuthDbContext

和比

Update-Database 20201218083037_CreateIdentitySchema -Context AuthDbContext

这奏效了。已成功在 MS SQL 服务器中创建表。

相关内容

最新更新