gpt4 book ai didi

c# - ASP.NET Core 以 EF6 和 Identity 为目标的完整框架

转载 作者:太空狗 更新时间:2023-10-29 17:59:59 24 4
gpt4 key购买 nike

我目前有一个面向完整 .NET Framework 的 .NET Core Web 应用程序和一个包含我的 EF6 实现的 .NET 4.6.1 类库项目。

我让这两个目前一起工作。

现在我需要添加Identity,但是我需要自定义实现。 (如果重要的话,我正在构建一个现有的用户表并且只关心本地登录)

所以在 4.6.1 类库项目中,我使用本指南创建了自定义身份类/存储/管理器:https://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-identity

我坚持的部分是如何配置 .NET Core 应用程序以使用 Identity 的非核心版本。

所有教程都有类似于

的配置
services.AddIdentity<ApplicationUser, ApplicationRole>(config => { })
.AddEntityFrameworkStores<ApplicationDbContext>();

app.UseIdentity();

但是,这两种方法仅存在于 Microsoft.AspNetCore.Identity 中,而不存在于类库所使用的 Microsoft.AspNet.Identity.Core 中。

.NET Core 应用程序应该引用哪些框架? Startup.cs 配置应该是什么样的?

为简单起见,我所有的自定义身份代码都与上面链接的文章中的完全一致。

Startup.cs 代码如下所示(引用了 AspNetCore.Identity)

services.AddIdentity<ApplicationUser, CustomRole>(config => { /* config */ })
.AddUserManager<ApplicationUserManager>()
.AddUserStore<CustomRoleStore>()
.AddDefaultTokenProviders();

示例 Controller

public AccountController(ApplicationSignInManager signInManager)
{
_signInManager = signInManager;
}

尝试运行时出错

InvalidOperationException: Type ApplicationUserManager must derive from UserManager.

最佳答案

However both those methods only exist in Microsoft.AspNetCore.Identity and not Microsoft.AspNet.Identity.Core, which is what the class library is using.

您应该严格区分两个 api:ASP NET Identity https://github.com/aspnet/AspNetIdentity和 ASP NET Core 标识 https://github.com/aspnet/Identity

What frameworks should the .NET Core App be referencing?

应引用 ASP NET Core Identity (Microsoft.AspNetCore)。

And what should the Startup.cs configuration look like?

由于您想要使用 EF6,因此您需要将“Microsoft.AspNetCore.Identity.EntityFrameworkCore”( https://github.com/aspnet/Identity/tree/master/src/EF ) 移植到您自己使用 EF6 的实现中。在此之后,您需要提供自己的 .AddEntityFrameworkStores<TDbContext>();扩展方法。因此,Startup.cs 应该保持不变(除了使用,要引用 AddEntityFrameworkStores,您需要指向移植的 lib 命名空间)。

关于c# - ASP.NET Core 以 EF6 和 Identity 为目标的完整框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41620058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com