![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Возможно вопрос высосан из пальца и я вообще не в том направление веду размышления, но в любом случае, чтоб сориентироватсья мне нужна помощь...
Есть у меня Zend Framework 2, хотя это не столь важно т.к. я почти уверен, что у других php framework-ов паттерн MVC реализован аналогично. В общем в ZF2 есть некоторые инструменты, позволяющие быстро реализовать авторизацию пользователя на сайте. В обычных условиях реализация этих инструментов размещается примерно на 10 строках кода, которые по сути принимают login && password и отдают result т.е. логика напрашивается быть инкапсулированной в класс, особенно если используется в других местах. Но с другой стороны это логика контроллера и инкапсулировать ее внутри логики модели, скажем, не совсем корректно. От сюда возникает вопрос. Стоит ли как-то оформлять эту логику и, если да, то как? Хелперы и плагины контроллера - подходят для этого? В общем, где следует располагать повторяющуюся логику контроллеров? |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Не понял. Есть, к примеру, разные варианты авторизации - простая авторизация с логином-паролем админа, определенным в файле - система авторизации с юзерами - система авторизации с юзерами, группами и распределенной системой прав. - вход на сайт с помощью .htpasswd - базовая аутентификация. Это все разные контроллеры или разные модели? imho - модели, разве что последний случай, возможно, нуждается в поддержке со стороны контроллера, чтобы выковыривать логин пароль из нужного места. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| BuShaRt |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Не совсем понял, поэтому возможно отвечу расплывчато.
Я очень опрометчиво назвал интересующий меня процесс авторизацией. На самом деле речь об аутентификации. На сайте есть несколько точек аутентификации с помощью логина и пароля (они имеют одинаковую логику, но разное представление). В сабже я вел речь именно о код реализующем логику аутентификации. Последующие действия, вроде разграничения доступа и т.п. не рассматриваются. Вот код, для наглядности.
Тут я не понял. Вы наверно имели ввиду, что контроллер может нуждаться в поддержке модели ибо в противном случае не понимаю как без контроллера можно работать с моделью, если контроллер есть главный руководящий элимент. |
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Теперь понятно, примерно. Этот код - контроллер, $authService- модель
Именно такой код каждый раз повторяется? В каждом новом контроллере? Может их (контроллеры) унаследовать от общего предка с таким методом аутентификации? Можно сделать хелпер-метод в контроллере (базовом), который позволит сэкономить эти несколько строк. Вероятно, получающий логин-md5(пароль) и возвращающий $auth. Это если промежуточные переменные удастся использовать прямо в методе. Логика контроллера от логики модели отличается параметрами, которыми они оперируют. Контроллер имеет право использовать GET/POST параметры, а модель - нет. Так что если при реализации метода модель не будет "знать" больше, чем она обязана знать сейчас, то хелпер-метод можно поместить и в модель. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| georgiy11 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 29.9.2008 Репутация: нет Всего: нет |
Один из вариантов родительский контроллер, но как говорится наследование самая сильная связь.
Модуль/компонент аутентификации и делегирования прав контроллера модулю аутентификации более гибкий вариант. В этом случае связь существенно уменьшается. При всём этом смена версии/алгоритма аутентификации будет более гибкая. Это сообщение отредактировал(а) georgiy11 - 27.8.2013, 19:35 |
|||
|
||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Спасибо за ответы. Т.к. я работаю с Zend Framework 2 и у него есть решение, позволяющие добавлять методы в контроллеры не за счет наследование (инструмент Conroller Plugin, который завязан на __invoke), то попробую реализовать через него, на опыте посмотрю во что это выльется.
Это сообщение отредактировал(а) BuShaRt - 28.8.2013, 09:35 |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |