在MVC应用程序中使用ApplicationUser

时间:2017-05-26 08:02:58

标签: c# entity-framework model-view-controller

有人可以在一些文档中指出在MVC应用程序中使用ApplicationUser的最佳实践吗?

我有一些我希望以ApplicationUser类为基础的类(例如,一个"员工"类用于使用该应用程序的内部人员和一个"客户端"类来提供客户也可以访问。

似乎我应该继承ApplicationUser或将其作为外键引用 - 但我不确定a)如何执行此操作或b)正确的方法是什么。

(我使用Code First Entity Framework来构建类。)

1 个答案:

答案 0 :(得分:1)

当我使用基于令牌的授权编写其他API时,我使用了this。它还包含实现电子邮件服务,刷新令牌服务等的良好实践。共有6篇专注于认证的文章。一旦我不得不将项目从MySql Membership Authorization迁移到Microsoft Identity,我将其用作reference。在架构方面(类似于CoreModels - >业务逻辑服务/提供商 - > UI提供商)我有一个单独的项目,其中授权模块有它的主要组件,如

  1. 的UserManager
  2. RoleManager
  3. SignInManager
  4. Rolestore的
  5. UserStore
  6. 以及提供商(如果您想使用基于声明的授权或OAuth,则需要它们)

    我建议你继承ApplicationUser类并以你喜欢的方式扩展它

    public partial class User : IdentityUser<Guid, UserLogin, UserRole, UserClaim>
    {
        public decimal Balance { get; set; }
    
        public string NickName { get; set; }
    
        public int AnotherEntityId { get; set; }
    
        [ForeignKey("AnotherEntityId ")]
        public virtual AnotherEntity AnotherEntity { get; set; }
    
        public virtual ICollection<OtherEntity> OtherEntities { get; set; }
    
        public User()
        {
            Id = Guid.NewGuid();
        }
    }
    

    而不是让2个表包含几乎类似的用户信息。角色将为您提供访问限制功能(如果客户和员工应具有不同的访问级别)