Asp中的角色管理器.Net Identity 2.0似乎不支持Guids
本文关键字:不支持 Guids Identity 角色 管理器 Net Asp | 更新日期: 2023-09-27 18:03:05
到目前为止,我还没有遇到将所有类型转换为使用Guid的问题(例如:
public class UserLogin : IdentityUserLogin<Guid> { ... }
public class UserRole : IdentityUserRole<Guid> { ... }
public class UserClaim : IdentityUserClaim<Guid> { ... }
public class User : IdentityUser<Guid, UserLogin, UserRole, UserClaim>
{
...
}
public class UserManager : UserManager<User, Guid> { ... }
深入了解Microsoft.AspNet.Identity.UserManager
:
public class UserManager<TUser, TKey> : IDisposable
where TUser : class, Microsoft.AspNet.Identity.IUser<TKey>
where TKey : System.IEquatable<TKey>
{ ... }
显然TKey
是通用的,所以它允许Guid
。
下一个是角色管理器:
public class RoleManager : RoleManager<Role>
{
}
但Microsoft.AspNet.Identity.RoleManager
的定义:
public class RoleManager<TRole> : RoleManager<TRole, string>
where TRole : class, Microsoft.AspNet.Identity.IRole<string>
{
}
似乎只在key for role为string
时才有效。这是一个错误还是我错过了什么?
好吧,这太奇怪了。
// Assembly Microsoft.AspNet.Identity.Core.dll, v2.0.0.0
namespace Microsoft.AspNet.Identity
{
public class RoleManager<TRole> : RoleManager<TRole, string>
where TRole : class, Microsoft.AspNet.Identity.IRole<string>
{
// Summary:
// Constructor
//
// Parameters:
// store:
public RoleManager(IRoleStore<TRole, string> store);
}
}
但是这是从另一个 RoleManager
!
// Assembly Microsoft.AspNet.Identity.Core.dll, v2.0.0.0
namespace Microsoft.AspNet.Identity
{
public class RoleManager<TRole, TKey> : IDisposable
where TRole : class, global::Microsoft.AspNet.Identity.IRole<TKey>
where TKey : global::System.IEquatable<TKey>
{
...
}
}
也许第一个角色管理器是一些遗留代码(string
for Asp。网络身份1).从第二个RoleManager
衍生似乎是要走的路:
public class RoleManager : RoleManager<Role, Guid> { ... }