簡體   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