Аутентификация пользователя Zend Framework (вопрос MVC) - PullRequest
1 голос
/ 08 июня 2011

У меня возникают проблемы с пониманием концепции MVC.

Я создаю модель пользователя, понимаете? Application_Model_Users. Они говорят, что модели должны содержать только структуру ... и бизнес-логика должна быть помещена в контроллер.

Итак, рассмотрим функцию под названием authenticate ($ user, $ password). Эта функция вернет true, если введенные имя пользователя и пароль верны, или false в противном случае. Где я должен поставить эту функцию? В контроллере Аутентификация или в модели Users?

Спасибо!

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Хотя операции модели часто включают операции хранения (БД, сервисер и т. Д.), Этим не ограничиваются. Модель, насколько я знаю, должна создавать объекты бизнес-логики, то есть классы, которые представляют ваши бизнес-объекты, такие как пользователь, человек, клиент и т. Д. Каждый класс должен определять свои собственные методы работы, например, класс модели Person должен позволяют узнать имя человека, рассчитать его возраст в соответствии с датой его рождения и т. д.

Кроме того, должны быть специализированные классы для хранения и поиска модели. С помощью этих классов вы можете выбрать всех своих клиентов или только одного из них, используя определенные условия и т. Д., Или сохранить измененный экземпляр класса Customer (например, клиент изменил свой адрес или номер телефона).

Это отделяет операции хранения / извлечения от операций входа в систему.

Итак, согласно вашему вопросу, ваша модель может иметь класс, который позволяет вам найти одного пользователя по его имени и паролю. Если пользователь найден, вы можете вернуть экземпляр класса Model_User (в примере). Затем, используя стандартный класс Zend_Auth или расширив его для создания собственного класса аутентификации, вы можете использовать некоторые параметры формы Login для выполнения аутентификации пользователя.

Следуйте краткому руководству по Zend Framework, в Zend Framework есть основы работы с MVC. Также там вы найдете некоторые ресурсы о Zend_Db и связанных классах, чтобы разрешить взаимодействие с БД. Существуют также классы Zend_Db_Table, Zend_Db_Table_Rowset и Zend_Db_Table_Row, которые можно расширить в соответствии с потребностями хранилища модели.

У меня есть личное решение, где я расширяю Zend_Db_Table для моего (в примере) класса Model_UserTable, используемого для хранения или запроса моих сущностей Model_User. А мой класс Model_User расширяет Zend_Db_Table_Row.

1 голос
/ 08 июня 2011

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

Когда дело доходит до аутентификации пользователя, вы, безусловно, должны реализовать функцию аутентификации внутри модели Users, я думаю, вы проведете проверку базы данных по таблице или подобному. На случай, если вы еще не используете его, Zend поставляется с пакетом для проверки подлинности: Zend_Auth (http://framework.zend.com/manual/en/zend.auth.html), он может ускорить реализацию защиты в вашем приложении.

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