如何将身份和用户管理添加到aspnetcore Web api中?



我正在构建 asp.net 核心 Web api,其中包含 3 种类型的用户:管理员、客户端和程序员。这些角色中的每一个都有自己的票证列表。这些是我已经添加的实体类:

public class User
{
[Key]
public Guid Id { get; set; }
[Required]
[MaxLength(50)]
public string FirstName { get; set; }
[Required]
[MaxLength(50)]
public string LastName { get; set; }
[Required]        
public string Address { get; set; }
[Required]       
public string Zip { get; set; }
[Required]
[Phone]
public string PhoneNumber { get; set; }
[Required]
[EmailAddress]
public string EmailAddress { get; set; }
[Required]
public Gender Gender { get; set; }
[Required]
[MaxLength(50)]
public string UserName { get; set; }
[Required]
[MaxLength(50)]
public string Password { get; set; }
[Required]
public Role Role { get; set; }
public virtual Programmer Programmer { get; set; }
public virtual Admin Admin { get; set; }
public virtual Client Client { get; set; }
}

public class Client
{
public Guid clientId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<Ticket> Tickets { get; set; } = new List<Ticket>();     
public Guid Id { get; set; }
public virtual User User { get; set; }
}
public class Admin
{
public Guid adminId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<Ticket> Tickets { get; set; } = new List<Ticket>();
public Guid Id { get; set; }
public virtual User User { get; set; }
}
public class Programmer
{
public Guid programmerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public ProgrammingLanguage ProgrammingLanguage { get; set; }
public Experience Experience { get; set; }
public DetailOriented DetailOriented { get; set; }
public FieldOfInterest FieldOfInterest { get; set; }

public virtual ICollection<Ticket> Tickets { get; set; } = new List<Ticket>();
public Guid Id { get; set; }
public virtual User User { get; set; }
}

我已经创建了常规的 DbContext,并使用该 DbContext 实现了我的 api 的功能。现在我想将用户更改为 IdentityUsers。我不确定我是否应该创建一个将处理 UserIdentity 的新项目,然后将这些用户传递给我的 api(如果是这样,我如何将他们传递给 api 并将它们与他们的票证连接,i.e.do 我只在 api 中留下票证表? (或像我已经做的那样将用户作为 api 的一部分(如果是这样, 将他们更改为身份用户以便我以后可以查询他们的票证的最佳方法是什么?有没有人有任何提示/链接/类似的代码示例或其他东西?我将不胜感激:)

现成的标识支持一组用户配置文件属性。最简单的解决方案是创建一个从 IdentityUser 继承的AppUser类,其中包含跨用户类型的所有属性。还要为每种用户类型引入一个接口,其中包含它们支持的属性。

class AppUser: IdentityUser, IAdmin, IProgrammmer, IClient {...}

根据与用户关联的身份角色,您可以将 AppUser 实例强制转换为相应的接口以访问特定于用户的属性。

相关内容

最新更新