gpt4 book ai didi

c# - AspNetCore.Identity 不适用于自定义用户/角色实现

转载 作者:太空狗 更新时间:2023-10-30 00:23:28 26 4
gpt4 key购买 nike

因为我倾向于偏爱Guid作为我的主键类型,我的 UserRole类实现如下

public class User : IdentityUser<Guid, UserClaim, UserRole, UserLogin>
{
}

public class Role : IdentityRole<Guid, UserRole, RoleClaim>
{
}

请注意 UserClaim , UserRole , UserLogin & RoleClaim都是以同样的方式实现的

这是我的 DbContext实现

public class ApplicationDbContext : IdentityDbContext<User, Role, Guid, UserClaim, UserRole, UserLogin, RoleClaim, UserToken>
{
}

到目前为止一切都很好,除了 AspNetCore 的新 DI 容器默认情况下似乎不喜欢我的自定义实现。来 self 的 Startup.cs 文件的以下代码行抛出如下所示的错误

services
.AddIdentity<User, Role>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();

GenericArguments[0], 'NewCo.DomainModel.Models.Identity.User', on 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`4[TUser,TRole,TContext,TKey]' violates the constraint of type 'TUser'.

我假设这是因为默认的 Identity gremlin 被实现为使用 IdentityUser<string> ,我在这里使用 IdentityUser<Guid> .

接下来我该做什么? (我完全失去了想法)

注意:我正在构建截至周一(2016 年 6 月 27 日)的 Microsoft 官方 .NET Core 和 ASP.NET Core 版本以及 Visual Studio Update 3(如果这对任何人有帮助的话)

最佳答案

由于您使用的是自定义键类型,因此您必须在调用 AddEntityFrameworkStores 时指定它:

services
.AddIdentity<User, Role>()
.AddEntityFrameworkStores<ApplicationDbContext, Guid>()
.AddDefaultTokenProviders();

关于c# - AspNetCore.Identity 不适用于自定义用户/角色实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38179694/

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