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

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

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

Подскажите, как это делайте вы?
  • Вопрос задан
  • 1583 просмотра
Решения вопроса 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...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 00:45
1000 руб./за проект
02 мая 2024, в 23:56
2000 руб./за проект