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.
我目前有一个使用身份的项目,个人用户可以访问他们自己的资源(子数据库 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
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.