【问题标题】:Moving ASP.NET Identity IdentityConfig.cs from App_Start folder从 App_Start 文件夹中移动 ASP.NET Identity IdentityConfig.cs
【发布时间】:2017-02-25 09:29:37
【问题描述】:

我在一个由三层层组成的ASP.NET MVC5项目中使用ASP.NET Identity 2.0; Web 应用程序(表示层)、单元测试(测试项目)和类库(数据层)。通常IdentityConfig.cs 位于Web 应用程序的App_Start 文件夹中,但是当我实现this 页面上指示的基于组的权限管理时,我想将所有域模型和IdentityConfig.cs 文件保留到Identity 文件夹中数据层项目而不是 Web 项目(表示层)。因为IdentityConfig.cs 需要访问放在我的数据层项目中的DbContext 类。这样做有什么问题吗?另一方面,您能否解释一下App_Start 文件夹是什么?

下面是我的项目中的 ASP.NET Identity 文件夹结构:

DataLayer(类库)

具体
EFDbContext

实体(我的实体类,除了来自 ASP.NET Identity 实体)

身份
ApplicationGroupManager
应用程序组存储
GroupStoreBase
身份配置
身份模型


PresentationLayer(网络应用)

App_Start

控制器
AccountController
GroupsAdminController
管理控制器
角色管理员控制器
用户管理员控制器

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-identity asp.net-identity-2 asp.net-identity-3


    【解决方案1】:

    只要你有 asp.net 身份,你就必须在表示层(web 项目)中添加对它的引用,配置将从那里开始。

    如果您将其移至数据访问层,那么您将安全问题放在数据访问中,这是不正确的。

    通常,我只是将它留在 web 项目中并创建自己的用户类并通过其 Id 将其链接到 ApplicationUser 类,但如果您必须将其分开,则可以将 IdentityConfig 放在单独的处理诸如安全、日志记录和异常处理等横切问题的库,因为该层将跨所有层工作。

    在数据访问中,您可以拥有自定义用户和角色存储,并将配置放在横切库中,并将所有这些链接到表示层,因为这是您的 Web 应用程序的启动点。

    App_Start 只是一个普通文件夹,其中包含应用程序启动时将执行的代码,您可以将此代码放在其他任何地方,它都是由 Global.asax 文件调用的

    【讨论】:

    • >>> 我有点困惑。当然安全是主要问题,但是; 1) 将上面 DataLayer ** 文件夹中的所有类移动到 **PresentationLayer 是否是个好主意? 2) 如果将 IdentityModels 也移动到 PresentationLayer 会怎样? 3) 如果我将它们全部移到 PresentationLayer,我将不得不访问 EFDbContext,但我不确定这是否是一个好习惯。那样可以么?那么,总体而言,您是否建议将所有与 ASP.NET Identity 相关的类和模型移至 Presentation 层,包括 IdentityModels 类?
    • 只要你使用 asp.net 身份,你将永远无法完全分离,唯一的解决方案是建立自己的身份系统,这有很多工作要做,在在我的情况下,我总是妥协,通过将 asp.net 身份保持在具有自己的上下文的表示层中所节省的工作量远高于分离
    • 好的,但我没有提到分离。请您看看我上面的问题并一一回复好吗?我只是问了一些场景,并想澄清它们是否是好主意。谢谢...
    • 您问了 2 个问题,如果您所做的是好的做法,我已经在回答中回复了您,结论是它会增加更多的工作,我认为这样做没有任何好处。另一部分是什么是 App_Start 文件夹,我已经在我的答案中阐明了它是什么。
    猜你喜欢
    • 2017-11-18
    • 1970-01-01
    • 2014-03-16
    • 2018-02-10
    • 2014-06-06
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多