我正在構建一個完全自定義的AspNetCore.Identity實現,因爲我想要TKey
全部是System.Guid
。恕我直言,我已經派生類型...AspNetCore.Identity自定義實現不工作
Role : IdentityRole<Guid, UserRole, RoleClaim>
RoleClaim : IdentityRoleClaim<Guid>
User : IdentityUser<Guid, UserClaim, UserRole, UserLogin>
UserClaim : IdentityUserClaim<Guid>
UserLogin : IdentityUserLogin<Guid>
UserRole : IdentityUserRole<Guid>
UserToken : IdentityUserToken<Guid>
ApplicationDbContext : IdentityDbContext<User, Role, Guid, UserClaim, UserRole, UserLogin, RoleClaim, UserToken>
ApplicationRoleManager : RoleManager<Role>
ApplicationRoleStore : RoleStore<Role, ApplicationDbContext, Guid, UserRole, RoleClaim>
ApplicationSignInManager : SignInManager<User>
ApplicationUserManager : UserManager<User>
**ApplicationUserStore** : UserStore<User, Role, ApplicationDbContext, Guid, UserClaim, UserRole, UserLogin, UserToken>
ApplicationUserStore
是問題的孩子!
實施
namespace NewCo.Identity
{
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using System;
public sealed class Role : IdentityRole<Guid, UserRole, RoleClaim>
{
}
}
namespace NewCo.Identity
{
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using System;
public sealed class UserRole : IdentityUserRole<Guid>
{
}
}
namespace NewCo.Identity
{
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using System;
public sealed class RoleClaim : IdentityRoleClaim<Guid>
{
}
}
// The problem is here...
namespace NewCo.Identity
{
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using System;
using System.Security.Claims;
public sealed class ApplicationUserStore : UserStore<User, Role, ApplicationDbContext, Guid, UserClaim, UserRole, UserLogin, UserToken>
{
}
}
錯誤
類型 'NewCo.Identity.Role' 不能在通用類型或方法被用作類型參數 'TRole' 'UserStore'。 不是從'NewCo.Identity.Role'到 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole>'的隱式引用轉換。
就我所見,除非這是一些(共同/對比/中)差異問題,否則所有代碼都會檢查出來......我錯了什麼?
這個問題問得好!約束條件是「TRole:IdentityRole>'。由於這是* class *約束,因此不存在共同/反對。 IMO他們只是忘了添加TRoleClaim泛型參數:( –
@IvanStoev謝謝,我已經提出這與ASPNETCore/Identity團隊。 – series0ne
https://github.com/aspnet/Identity/issues/1319 – series0ne