从App_Start文件夹移动ASP.NET Identity IdentityConfig.cs

时间:2016-10-16 09:19:01

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

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

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

DataLayer(类库)

具体
EFDbContext

实体(我的实体类除了ASP.NET身份实体)

身份
       ApplicationGroupManager
      ApplicationGroupStore
      GroupStoreBase
      IdentityConfig
      IdentityModels


PresentationLayer(网络应用程序)

App_Start

控制器
      的AccountController
      GroupsAdminController
      ManageController
      RolesAdminController
      UsersAdminController

1 个答案:

答案 0 :(得分:1)

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

如果您将其移至数据访问层,则会在数据访问中引入安全问题,这是不正确的。

通常情况下,我只是将它保留在Web项目中并创建我自己的用户类,并通过其ID将其链接到ApplicationUser类,但如果您必须将其分隔,那么您可以放置​​{{1}在一个单独的库中,它处理交叉问题,如安全性,日志记录和异常处理,因为该层将在所有层中工作。

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

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