0

Я использую ASP.NET Identity 2.0 в проекте ASP.NET MVC5, который состоит из трех слоев; Веб-приложение (уровень представления), модульный тест (тестовый проект) и библиотека классов (уровень данных). Обычно IdentityConfig.cs находится в папке App_Start веб-приложения, но поскольку я реализую управление разрешениями на основе групп, как указано на странице this, я хочу сохранить все модели домена и файл IdentityConfig.cs в папке Identity в проекте уровня данных вместо веб-проекта (уровень представления). Поскольку IdentityConfig.cs должен получить доступ к классу DbContext, который помещен в мой проект уровня данных. Есть ли проблема в этом? С другой стороны, не могли бы вы немного объяснить, что такое папка App_Start?Перемещение ASP.NET Identity IdentityConfig.cs из папки App_Start

Вот структура папок ASP.NET Идентичность в моем проекте ниже:

DataLayer (библиотека классов)

Бетон
EFDbContext

Entities (мои классы сущностей, за исключением от объектов идентификации ASP.NET)

Идентичность
ApplicationGroupManager
ApplicationGroupStore
GroupStoreBase
IdentityConfig
IdentityModels


представительский уровень (веб-приложение)

App_Sta к.т.

Контроллеры
AccountController
GroupsAdminController
ManageController
RolesAdminController
UsersAdminController

ответ

1

До тех пор, пока у вас есть личность asp.net, вы должны добавить ссылку на него в (веб-проект), и конфигурация будет оттуда оттуда.

Если вы переместили его на уровень доступа к данным, вы поставили проблему безопасности в доступ к данным, что не правильно.

Обычно, я просто оставить его в веб-проекта и создать свой собственный класс пользователей и связать его с ApplicationUser класса через его Id, но если вы должны seprate его, то вы можете поставить IdentityConfig в отдельную библиотеку, которая обрабатывает перекрестная резка касается безопасности, регистрации и обработки исключений, так как этот слой будет работать на всех уровнях.

В доступе к данным вы можете иметь пользовательские магазины пользователей и ролей, а также поместить конфигурацию в библиотеку перекрестных ссылок и связать все это с уровнем презентации, поскольку это точка начала вашего веб-приложения.

App_Start является Хуст нормальной папки, которая имеет код, который будет выполняться при запуске приложения, и вы можете поместить этот код где-либо еще, всем это вызывается в Global.asax файл

+0

Спасибо за ответ, Я добавил структуру файла к моему вопросу выше ... –

+0

>>> Я немного смущен. Конечно, безопасность - это главная проблема, но; ** 1) ** есть ли хорошая идея переместить все классы в ** папку DataLayer ** выше на ** PresentationLayer **? ** 2) ** Что делать, если перемещение IdentityModels в PresentationLayer также? ** 3) ** Если я переведу все из них в PresentationLayer, мне придется получить доступ к ** EFDbContext **, но я не уверен, что это хорошая практика. Это нормально? Итак, в целом, предлагаете ли вы переместить все классы и модели, связанные с идентификатором ASP.NET, на уровень представления, включая класс IdentityModels? –

+0

Вы никогда не сможете полностью разойтись до тех пор, пока используете идентификатор asp.net, единственное решение для этого - создать свою собственную систему идентификации, в которой многое предстоит сделать, в моем случае я всегда компромисс, усилия, которые будут сохранены, сохраняя идентификатор asp.net в слое представления со своим собственным контекстом, намного выше, чем разделение –

 Смежные вопросы

  • Нет связанных вопросов^_^