【问题标题】:How to set up Identity in an ASP.Net core project using EF 6.0 in a separate class library如何在单独的类库中使用 EF 6.0 在 ASP.Net 核心项目中设置身份
【发布时间】:2017-12-05 17:26:10
【问题描述】:

不久前我问过this question about using EF with ASP.Net core,效果很好。现在我想添加 ASP.Net 身份,我想知道最好的方法是将身份逻辑添加到具有常规/非核心 EF 的单独项目中,还是添加到具有 EF 核心的主核心项目中,或其他东西。我看到很多讨论 EF 核心的页面,但我更愿意在任何地方使用相同的上下文,并且我更愿意像目前一样使用常规 EF。我在这里寻找一种干净/最佳实践的方法,我一直在使用常规的 EF,因为据我所知 EF 核心 1.0 不支持存储过程,而且我更喜欢继续使用数据库优先方法。感谢任何帮助我摆脱流沙的帮助。

注意:我的“用户”表(称为其他)中有一些现有的配置文件数据;我打算将其用作我的身份用户表。

【问题讨论】:

    标签: c# asp.net entity-framework asp.net-core


    【解决方案1】:

    您是否考虑过使用可以根据您现有的身份数据库颁发令牌的显式身份服务?

    IdentityServer4 是一个 OpenId Connect 提供者。它supports EF 以便您可以使用现有的用户数据来执行身份验证。

    现在的推动力是向 .NET Core 发展,如果有一个单独的项目专门用于处理使用 IdentityServer4 和 EF Core 的身份,这将是朝着这个方向迈出的一个很好的一步。

    【讨论】:

      【解决方案2】:

      ASP.Net Identity Framework 是为代码优先设计的,通常会尝试为您生成其表。我不确定它是否能够以数据库优先工作,但我认为您可以按如下方式使其工作:

      1. 使用身份/个人用户帐户创建一个单独的临时项目/解决方案。
      2. 将此临时数据库中的数据结构插入您的主数据库,将 AspNetUsers 与您的 User 表合并。
      3. 删除临时项目/解决方案和数据库。
      4. 更新 EF6 项目中的模型。这应该会引入新表。
      5. 将 Identity Framework 添加到您的 ASP.Net Core 项目,从您的 EF6 项目中引用数据库上下文。

      我还没有尝试过,但是在使用了很多身份框架之后,我看不出它不起作用的原因。

      进一步阅读:

      数据库第一身份:Using Asp.Net Identity DataBase first approach

      Users 表的自定义表名:How can I change the table names when using Visual Studio 2013 ASP.NET Identity?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-21
        • 2022-12-03
        • 2019-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-21
        • 1970-01-01
        相关资源
        最近更新 更多