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

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

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

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

Подскажите, как это делайте вы?
  • Вопрос задан
  • 1724 просмотра
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽