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

Как удалить сессию пользователю ( разлогинить его )?

Система авторизации следующая:

таблица токенов:
(user_id, token, other_info..)

при успешном вводе пары логин/пароль, создаю новый токен:
1. Создаю сессию где ( user_id, Name, Last name, User photo, in_loggened - true( для проверки ) ) - для того чтобы не делать каждый раз запрос к бд
2. Пишу в куки сгенерированный token

Проверяю авторизован ли:
$_SESSION['in_loggened'] === true - все хорошо, если нет то:

если есть в куках токен, то запрашиваю всю инфу по токену и пишу в сессии все.

если нет то на страницу авторизации

В чем возникла проблема, как разлогинить другого пользователя?

я администратор, удаляю токен, но сессия остается пользователь может дальше гулять по сайту

Делать запрос к бд при каждой проверке на авторизованность накладно...
  • Вопрос задан
  • 9397 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 3
goodwin74
@goodwin74
Либо к базе, либо создавай файлы с названием токена и проверяй наличие каждый раз в папке этого токена (при отсутствии файла делай session destroy)

2 вариант еще удаленно удалять сессию таким методом
session_id($old_session_id);
session_start();
session_destroy();

Логика получается такая:
смотрим куки,
если нет -> отправляем на авторизацию
если есть -> проверяем есть ли сессия - если нет -> отправляем на авторизацию
если есть -> проверяем соответствие токена кук и сессии -> если не равно -> отправляем на авторизацию
если равно -> значит пропускаем
Ответ написан
Flaker
@Flaker
Вам, в любом случае, нужно проверять эквивалентность токена в базе и токена в кукисах при каждом обращении к ресурсу. При не совпадении токенов, чистим сессию и отправляем пользователя логиниться.
Ответ написан
@Dlike Автор вопроса
noobe
Мое решение - отказаться от использование кук( для авторизации )
и хранить сессии вечно в своей директории.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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