繁体   English   中英

如何在aspnetcore web api中添加身份和用户管理?

[英]How add identity and user management into aspnetcore web api?

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

 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 并将它们与他们的票证联系起来,iedo 我只在 api 中留下票证表?) 或者像我已经做的那样将用户作为 api 的一部分(如果是这样,将他们更改为身份用户的最佳方法是什么,以便我以后可以查询他们的票?)。 有没有人有任何提示/链接/类似的代码示例或其他东西? 我将感激不尽 :)

开箱即用,Identity 支持一组用户配置文件属性。 最简单的解决方案是创建一个从 IdentityUser 继承的AppUser类,该类具有跨用户类型的所有属性。 还为您的每个用户类型引入一个界面,以及它们支持的属性。

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

根据与用户关联的 IdentityRole,您可以将 AppUser 实例转换为适当的接口以访问用户特定的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM