Где найти настраиваемое членство, роли, профили поставщиков в трехуровневой настройке? - PullRequest
4 голосов
/ 28 марта 2011

У меня есть трехуровневый проект ASP.NET MVC 3, который имеет уровень данных, уровень обслуживания, а затем уровень представления, который вызывает уровень обслуживания для получения данных.Я на самом деле использую шаблоны doFactory в решении для действий.

Я хочу реализовать пользовательское членство, роли, провайдера профилей, но я точно не знаю, где его разместить.Я думал о том, чтобы поместить его на сервисный уровень, а затем попросить провайдера вызвать объекты DAO для получения информации.

Есть еще идеи?

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

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

  • Ваши методы действия передают информацию сервисным объектам, ответственным за авторизацию.

  • Ваш уровень сервиса не будет знать, находится ли он в веб-приложении или нет.

  • Слои данных - это просто место, где хранится эта информация, а не место, где она обрабатывается.

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

Редактировать из-за комментария: я делаю это в моем текущем проекте (пара долларовых возможностей). У меня есть решения безопасности в методах действия. (Хотя, конечно, инструментальные средства для создания этого простого - это объекты из сервисного уровня.) Например, если текущий пользователь не имеет этой роли или этой роли, то перенаправьте его на страницу отклонения, в противном случае сделайте это. MyServiceLayerObject.DoThing() не имеет безопасности внутри.

Это самый простой способ для моего приложения и многих других. («Самый простой» означает, что это будет наименьшее количество ошибок. Когда дело доходит до безопасности, просто это хорошо!) Так как метод Action является шлюзом для функциональности, обеспечение безопасности на уровне сервиса просто вызовет дополнительную работу и фактически неясно что за безопасность происходило. Теперь это мое приложение, где обычно есть одно место, где происходит каждое действие.

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

1 голос
/ 28 марта 2011

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

http://elysianonline.com/programming/wcf-wrapper-for-asp-net-membership/

А вот ...

http://elysianonline.com/programming/using-the-wcf-membership-provider/

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