2009-03-31 6 views
0

Я разрабатываю свою собственную фреймворк PHP, и я пытаюсь сделать что-то более «по книге».Разделительные линии между объектом сеанса, пользовательским объектом и контроллером входа

Я хочу создать систему входа в систему. Я делал это много раз, но теперь я просто хочу подтвердить/получить некоторые отзывы о системе.

Я знаю, что нам нужно ...

  • Сеанс Объект Объект
  • Пользователь,
  • Войти Контроллер

Что мой вопрос, есть кто имеет какую власть?

Вот моя мысль - когда вы отправляете свой un/pw, он, очевидно, переходит к контроллеру входа. Нам нужно посмотреть, что un/pw комбо в пользовательской базе данных, и поэтому я чувствую, что это должно быть сделано в объекте пользователя ... $ User-> authenticate ($ un, $ pw).

Все, что я должен сделать, возвращает true или false. Затем LoginController должен сообщить объекту Session создать сеанс ... $ session-> create(). Но, кроме меня, я задаюсь вопросом, должен ли объект User и Session быть чуть ближе вязать, а не полагаться на контроллер.

В поисках мнений, спасибо заранее.

ответ

0

Мои мысли для рамки, как это:

Инициализировать объект сеанса на время загрузки страниц, и установить его по умолчанию в «гостевой учетной записи».

После инициализации ваш объект сеанса ищет идентификатор сеанса (из файла cookie?) И проверяет этот идентификатор на вашем сервере отслеживания сеансов, будь то база данных или все, что вы используете.

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

Контроль доступа должен просто аутентифицировать пользователя от входа в систему и инициализировать сеанс, связывая идентификатор сеанса и идентификатор пользователя на задней стороне и записывая идентификатор сеанса в файл cookie.

... Однако более эффективным способом было бы аутентифицировать пользователя один раз и записать идентификатор пользователя в файл cookie с цифровой подписью, установленный сервером, и доверять всем действительным куки, возвращаемым клиентом. Это сделало бы управление сеансами настолько легким и обеспечило бы спасброски по всему миру.

2

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

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

P.s. Вы опубликовали свою структуру? Гитуб это! :-D

+0

Я согласен с этим. В моих рамках - на GitHub;) http://github.com/apinstein/phocoa - логин отделяется от модели. Приложение определяет логин, и вы создаете делегат для проверки учетных данных против модели. На практике это действительно хорошо.Не стесняйтесь проверить источник. – apinstein

+0

Да, поскольку PHP в основном связан с веб-сайтами, часто возникает желание объединить несколько разных вещей для удобства (или повторного использования), что не совсем неправильно, я полагаю, это просто зависит от контекста. – Mario

Смежные вопросы