При этом используя только
PHP, MySQL, сессии и куки (
без redis'ов, мемкешов и т.д.).
Просто когда начал писать восстановление пароля (по сути сброс, новый приходит на почту юзеру), понял что по логике здесь должен быть "выход на всех устройствах", а как организовать, не пойму.
Админки до этого как-то особо не нужны были, поэтому использовал их только для своих самых маленьких нужд с простой записью auth=true в сессии. По выключении браузера сессия терялась. Знаю что можно увеличить жизнь сессии, но вроде как не рекомендуют, пишут лучше потом восстанавливать их по кукам(дополнительные видимо ещё ставить, не сессионные) или токенам в БД (не сталкивался). Вот хотел спросить чего куда записывать-то в итоге, чтобы можно было потом различать авторизации пользователя с разных устройств, и чтобы разом их можно было снести при сбросе пароля?
Пока образно могу себе как-то так представить:
1. Авторизуемся -> заполняем сессию, записываем дополнительную (долгосрочную, напр 3 дня) куку с рандом-строкой (mycoockie = "dsf34Nrty4d4dftlk5r4g5") для восстановления сессии, записываем в БД в таблице sessions эту же самую строку ("dsf34Nrty4d4dftlk5r4g5") и ID пользователя, кому принадлежит сессия.
открываем след. страницу:
2. Если есть сессия -> работаем (или тоже постоянно сверять чтобы были какие-то актуальные данные в БД, ведь возможно я злоумышленник, а реальный пользователь воспользовался сбросом пароля, т.е. меня должно сразу выкинуть).
3. Если пропала (закрывали браузер или 24 минуты неактивности что вроде по умолчанию для сессий), проверяем куку (mycoockie), и если в ней какая-нибудь рандом-строка. -> проверяем наличие этой рандомной строки в БД, если найдена, то восстанавливаем по ID напротив этой строки данные юзера.