eugenius1997
@eugenius1997
недоПрограммист

Как сохранить пользователя авторизованным на сайте?

Я слышал про куки и сессии, но насколько я знаю, сессия заканчивается при закрытии браузера, а куки стираются при окончании сессии. Подскажите, как это реализуется?
  • Вопрос задан
  • 1174 просмотра
Решения вопроса 2
Krasnodar_etc
@Krasnodar_etc
fundraiseup
Куки можно выставлять на фиксированное время (дни, недели, ...). Стираются при окончании сессии только сессионные куки (или выставленные без даты)
Ответ написан
@Vasiliy_M
phpfaq.ru/sessions

Как сохранить пользователя авторизованным на сайте?

В общем смысле - нужно в куки (не сессионные, сессии можно вообще не использовать для авторизации)
прописать логин + пароль в зашифрованном виде. Дальше примерно такой код:

/**
     * Аутентификация пользователя на основании данных из COOKIE.
     *
     * @param void
     * @return Mvs\Module\User\Model\User
     */
    public function processAuthentication()
    {
        if ($this->request->getCookie(self::ID_COOKIE_NAME, 'string') &&
            $this->request->getCookie(self::HASH_COOKIE_NAME, 'string')
        ) {
            $user = $this->mapper->findModelById($this->request->getCookie(self::ID_COOKIE_NAME, 'string'));

            if (is_object($user) &&
                md5($user->getLogin() . $user->getPassword() . Mvs\Registry::getInstance()->SECURITY['AUTHORIZATION_SALT'])
                === $this->request->getCookie(self::HASH_COOKIE_NAME, 'string')
            ) {
                $user->setVisitdate(new Mvs\Type\Datetime());
                $user->setIp($_SERVER['REMOTE_ADDR']);
                $this->mapper->saveModel($user);
                return $user;
            } else {
                $this->logout();
            }
        }

        return $this->mapper->findModelById(-1);
    }


Сессия при авторизации не нужна по большому счету. Можно проверять доступ пользователя на основании одних лишь кук.

Есть проблема безопасности - могут украсть куку, но при автоологине, все сайты сообщают - мол, это не безопасно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы