NET Core 用户身份分组

NET Core identity grouping of users

我目前有一个使用身份的项目,个人用户可以访问他们自己的资源(子数据库 table 通过应用程序用户 ID 链接)。我希望每个注册的用户(管理员)都能够邀请新用户加入他们的 'group' 并共享相同的资源。

我正在考虑实施类似于当前 'Roles' 和 'UserRoles' table 的 'Groups' 和 'UserGroups' table。下面的代码看起来可以实现这个目标吗?

  public class ApplicationUser : IdentityUser
  {
    [MaxLength(30)]
    public string FirstName { get; set; }
    [MaxLength(30)]
    public string LastName { get; set; }
    [MaxLength(100)]
    public string Company { get; set; }
    [MaxLength(30)]
    public string Telephone { get; set; }
    [MaxLength(15)]
    public string Postcode { get; set; }
    public DateTime Created { get; set; } = DateTime.UtcNow;
    public DateTime PasswordResetTime { get; set; } = DateTime.UtcNow;
    public bool PasswordReset { get; set; } = false;
    public virtual ICollection<GSMSite> GSMSites { get; set; }
  }

 public class UserGroups
 {
    public virtual ApplicationUser ApplicationUser { get; set; }
    public virtual Groups Groups { get; set; }
 }

 public class Groups
 {
    public Guid Id { get; set; }
    [MaxLength(30)]
    public string Name { get; set; }
 }

您正在尝试实现多对多关系。 首先按照惯例你应该用单数形式命名类:

  • 用户组 -> 用户组
  • 群组 -> 群组

您还应该将 ICollection 放在 AplicationUser 和组中:

public virtual ICollection<UserGroup> UserGroups

并将 UserGroup 更改为:

 public class UserGroup
 {
    public Guid ApplicationUserId { get; set;}
    public virtual ApplicationUser ApplicationUser { get; set; }
    public Guid GroupId { get; set; }
    public virtual Groups Groups { get; set; }
 }

然后您所说的资源应该链接到 Group 而不是 ApplicationUser.