【问题标题】:Identity based Authentication with Custom model使用自定义模型的基于身份的身份验证
【发布时间】:2020-11-10 00:32:25
【问题描述】:

我正在尝试向 asp net core 3.1 应用程序添加身份验证。 我有一个现有的数据库,我从那里生成了模型。主要限制是我与数据库结构相关。

例如,这是我需要的用户模型。

 public partial class TFactoryWorker: IdentityUser
    {
        public int idPerson { get; set; }
        public string Code { get; set; }
        public int Token { get; set; }
}

想法如下,从 IdentityUser 继承模型(我已经在该模型中拥有用户名、电子邮件等)更新 DBContext 并自定义脚手架视图中的注册/登录字段。 (https://docs.microsoft.com/en-us/aspnet/core/security/authentication/customize-identity-model?view=aspnetcore-3.1)。

例如,我需要 FactoryWorker 使用 TokenCode 而不是 emailpassword

这是一种可行的方法吗?

我还发现了这个帖子https://docs.microsoft.com/en-us/aspnet/core/security/authorization/secure-data?view=aspnetcore-3.1。在这里,它定义了一个具有 OwnerId 的联系人模型,该模型与 AspNetUsers 表相关,因此原始实体 (FactoryWorker) 需要最小的更改 (只需添加绑定到 aspNetUser 的 OwnerId) 这里的重点是,我需要在不修改现有表的情况下添加身份验证。 关于如何继续的任何建议或一些提示(我是所有这些东西的初学者,我对信息量感到不知所措......谢谢!)

【问题讨论】:

    标签: c# authentication asp.net-identity


    【解决方案1】:

    我做了以下。

    我使用个人用户帐户创建了一个asp net core app,并进行了必要的更改以显示用户名字段而不是默认字段电子邮件输入字段。 (这只是从脚手架项目中自定义输入模型和模板,用户现在使用用户名+密码登录)

    然后我在我的数据库中做了一些更改。

    在我的 TFactoryWorker 表中,我将 Code 字段设置为主键(这是唯一值,不能重复)。记住下面的模型

     public partial class TFactoryWorker
        {
            public int idWorker {get;}
            public string Code { get; set; }
            public int Token { get; set; }
        }
    

    然后我有 AspNetUsers 表及其正确的字段(id、用户名、电子邮件等)(这是通过 迁移自动生成的),我在该表中添加了字段 UserName 到表 TFactoryWorker Code代码用户名相同。

    这样我就不必修改我现有的数据库。可能会进行一些规范化以从 TFactoryWorker 表中删除一些冗余字段(此表包含电子邮件、电话和 AspNetUsers 中已经存在的一些其他字段)

    缺点是我需要让每个用户在系统中再次注册,但使用他们在以前的应用程序中使用的用户名或代码。一旦他们在应用程序中注册,来自 aspNetUsers 的用户名与 TFactoryWorker 中代码中的现有值相同。

    总结

    我使用默认身份验证并添加外键,因此我不需要对其余表进行更改,TFactoryWorker 只是 AspNetUsers 表的一些附加数据,它们是由外键绑定的,所以如果我需要从用户那里获取一些信息,我可以通过一些连接来获取它。

    我不确定这是否正确,但它对我有用。

    【讨论】:

      猜你喜欢
      • 2017-07-17
      • 2016-08-04
      • 1970-01-01
      • 2015-11-12
      • 2020-04-01
      • 2022-12-10
      • 2017-08-26
      • 2017-03-10
      • 2021-01-09
      相关资源
      最近更新 更多