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时才有效。这是一个错误还是我错过了什么?

Asp中的角色管理器.Net Identity 2.0似乎不支持Guids

好吧,这太奇怪了。

// 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> { ... }