Разделение проблем и аутентификация - PullRequest
0 голосов
/ 06 июня 2010

Я пытаюсь быть хорошим разработчиком и отделить свои проблемы. У меня есть проект ASP.NET MVC со всем моим веб-кодом и проект DAL со всем кодом модели.

Иногда код в DAL должен проверять, авторизован ли текущий пользователь для выполнения каких-либо действий, проверяя что-то вроде CurrentUser.IsAdmin.

Для веб-сайта текущее значение получено из имени пользователя Windows (из HttpContext.Current.User.Identity), но это явно проблема сети и не должна быть связана с DAL.

Каков наилучший шаблон для слабой привязки аутентификации? Должен ли DAL запрашивать код MVC для имени пользователя, или MVC сообщает DAL? Есть ли преимущества или недостатки одного или другого?

Спасибо!

1 Ответ

1 голос
/ 06 июня 2010

Обычно я занимаюсь безопасностью на уровне контроллера, а не на уровне данных. Если вы хотите обрабатывать это на уровне данных, я бы использовал инъекцию, чтобы дать вашему DAL либо текущего пользователя, либо средства для доступа к тому, кто является текущим пользователем. В этом случае это будет означать внедрение объекта User из контроллера при создании экземпляра DAL. Иногда я делаю это для аудита, то есть текущий пользователь может быть членом роли, которая дает доступ к изменению данных пользователя. В этом случае я хочу вставить фактического пользователя, вносящего изменения в таблицу аудита. Я бы не использовал HttpContext.Current - вы должны вместо этого использовать свойства на контроллере и внедрять их, а не заставлять DAL получать их из статического объекта. Это значительно упростит тестирование вашего DAL.

При обработке безопасности в контроллере вы можете использовать AuthorizeAttribute или пользовательские атрибуты, полученные из него, для реализации ваших сквозных проблем безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...