Ты очень хорошо думаешь. Хотя уровень пользовательского интерфейса взаимодействует с клиентом и принимает его пароль, уровень обслуживания должен обрабатывать попытки входа в систему.
Ваши методы действия передают информацию сервисным объектам, ответственным за авторизацию.
Ваш уровень сервиса не будет знать, находится ли он в веб-приложении или нет.
Слои данных - это просто место, где хранится эта информация, а не место, где она обрабатывается.
Вы можете оставить идентификатор пользователя на уровне пользовательского интерфейса в сеансе. При входе в систему сервисный уровень берет имя пользователя / пароль / что угодно и возвращает идентификатор пользователя. Или ваши методы действий могут каждый раз передавать сеансовый ключ на сервисный уровень для получения информации о пользователе.
Редактировать из-за комментария: я делаю это в моем текущем проекте (пара долларовых возможностей). У меня есть решения безопасности в методах действия. (Хотя, конечно, инструментальные средства для создания этого простого - это объекты из сервисного уровня.) Например, если текущий пользователь не имеет этой роли или этой роли, то перенаправьте его на страницу отклонения, в противном случае сделайте это. MyServiceLayerObject.DoThing()
не имеет безопасности внутри.
Это самый простой способ для моего приложения и многих других. («Самый простой» означает, что это будет наименьшее количество ошибок. Когда дело доходит до безопасности, просто это хорошо!) Так как метод Action является шлюзом для функциональности, обеспечение безопасности на уровне сервиса просто вызовет дополнительную работу и фактически неясно что за безопасность происходило. Теперь это мое приложение, где обычно есть одно место, где происходит каждое действие.
Ваше приложение может отличаться. Чем больше разных методов действий и (особенно) разных компонентов используют функциональность вашего сервисного уровня, тем больше вы хотите, чтобы функциональность сервисного уровня была заблокирована вашей схемой авторизации. Многие считают, что безопасность должна всегда находиться на уровне обслуживания, и что любые дополнительные действия по обеспечению безопасности на уровне пользовательского интерфейса будут иметь избыточность бонуса. Я не согласен с этим.