Задать вопрос

Как лучше проверять авторизован ли пользователь?

Делаю так:
Авторизовался:
В сессию - 'logined' - true
в куки:
id
hash
Планирую создать CRON, который каждые 5 минут будет проверять авторизован ли пользователь или нет, или подменили что-то... (Сверяться с бд и т.д)

Не сравнивать же все с бд при каждом действии/переходе...
Так что проверяю если SESSION 'logined' === true
То все хорошо...

Подскажите, как это делайте вы?
  • Вопрос задан
  • 1661 просмотр
Подписаться 4 Оценить Комментировать
Решения вопроса 1
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
При чём здесь куки? У вас есть сессии, вот в них всё и пишите. На успешном логине записываете logged_in = true, можете ip записать в сессию для пущей безопасности. На каждом запросе смотрите в эти самые сессии и сверяете ip запроса с ip в сессии, если сменился разлогиниваете.

Ваши поделки с хешами уже решены в сессиях. И cron-a никакого не надо, выставляете таймаут сессиям который хотите и сессионная кука сама удалится.

По секрету скажу, что сессии по дефолту хранятся в файлах на жестком диске, поэтому выборка данных из сессии будет не быстрее, чем выборка данных из БД. Поэтому не стоит пытаться оптимизировать то, в чём не разбираетесь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Не сравнивать же все с бд при каждом действии/переходе...

Чей-та? Это вполне нормально, если действие от "подмененного" пользователя может что-то за собой повлечь. А такие серьезные проекты, как Вконтакте, так вообще каждые 10 секунд проверки выполняют.
Ответ написан
Stalker_RED
@Stalker_RED
В куках только идентификатор сессии. Писать туда userId или логин слишком рискованно, т.к. пользователь легко может их модифицировать.
Проверять авторизацию по таймеру - излишне, имхо. Достаточно ограничить время жизни сессии какими-то разумными рамками (по умолчанию 24 минуты).
Ответ написан
DIITHiTech
@DIITHiTech
Fullstack javascript developer
Ну если решили собственный механизм авторизации на куках, то я обычно, если не для Пентагона пишу, делаю так:
Храню в куках userid и hash сгенерированной сессии
На сервере проверяю в какой-нить функции типа enterSession наличие куки и если есть- ищу по куках сессию для пользователя userid и сходится ли IP на которую он открыт с тем, с которого пытаются сделать запрос. Если все ОК заполняю какой нить $CURRENT_USER массив c основной инфой, иначе =null; Тогда, если $CURRENT_USER!=null значит авторизован.
Сессии храню в таблицах в озу в Nosql. После, обычно, 60 мин бездействия, сессию закрываю. Для особо критичных действий - прошу указать текущий пароль...
собственно не многим отличается от сесcий php...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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