【问题标题】:.NET Core Identity. Use one context or two?.NET 核心标识。使用一两个上下文?
【发布时间】:2020-09-27 08:50:21
【问题描述】:

我正在努力解决一个基本问题。将我的 ASP.NET Core Identity 上下文与我的业务上下文分开或将两者结合起来。

从哲学上讲,将它们分开似乎很好。如果我想在未来的某个时候升级 .NET Core,如果我的身份上下文是独立的,那么问题就会更少。

实际上,将它们结合起来似乎是个好主意。否则,我将创建另一个用户表或做一些奇怪的解决方法来从导航属性中获取用户信息。

如何在 .NET Core 中处理身份上下文?

【问题讨论】:

    标签: .net-core asp.net-identity


    【解决方案1】:

    根据我的经验,将身份上下文与业务逻辑分开是一个好主意。

    • 您可能需要对身份数据库进行一些昂贵的加密和其他操作。可能无需对您的业务数据应用此类加密
    • 您可以选择替换,为您的身份数据库制定单独的备份计划和恢复计划。非身份数据库可能有自己的计划。
    • 更重要的是,有一天,您可能会决定选择第 3 方身份验证提供商,而忘记自己管理身份。此时,您可以进行一些迁移,丢弃不再需要的身份数据库。

    所以,是的,最好使用不同的上下文/数据库。

    注意:我假设,每个上下文都链接到不同的数据库。这是给定的,但为了清楚起见,将其放在这里。

    【讨论】:

    • 所以,跟进我的部分问题。然后你会在另一个数据库中创建一个不同的用户表吗?因此,身份验证数据库包含对用户进行身份验证的最低要求,而“主”数据库将包含有关用户的面向用户的信息,例如姓名等?
    • 用户数据库将包含与用户、名称相关的所有内容以及与角色、密码恢复等用户相关的所有内容。任何需要保护并可能在某个时候加密的东西。
    • 那么如何从这个表连接到另一个数据库中的表呢?如果我在主数据库中有多个需要用户 ID 字段的表,在拆分数据库场景中如何实现?
    • 如果您有新问题,您应该考虑发布一个新问题 :) cmets 旨在进一步澄清。发布一个新问题,您可以将其链接到此。
    • 如果您阅读我的原始问题,我会提出这一点。不幸的是,仅仅说“我使用两种上下文”并不能回答我的问题。如果其他人的看法不同,也许我的措辞不够清楚。
    猜你喜欢
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多