Разделительные линии между объектом сеанса, объектом пользователя и контроллером входа - PullRequest
0 голосов
/ 31 марта 2009

Я разрабатываю свой собственный PHP-фреймворк и пытаюсь сделать что-то еще "по книге".

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

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

  • Объект сеанса
  • Объект пользователя
  • Контроллер входа в систему

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

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

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

Ищем мнения, заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2009

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

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

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

0 голосов
/ 01 апреля 2009

Мои мысли о такой структуре:

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

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

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

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

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

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