@banny_name

Как правильно реализовать авторизацию под эти задачи?

Перерыл несколько страниц поиска тут, но достойного ничего не нашел.

Меня интересует то, как сохранять данные ( сессия или куки ) - знаю что при сессиях используется кука(идентификатор)

Мне нужно будет:
1. Использовать сессии для хранения информации ( Имя, Путь до аватарки, и возраст) - есть страницы где бд не используется, но нужна эта информация и каждый раз делать запрос в бд глупо.

2. Манипулировать пользователем если он оффлайн ( разлогинить его и т.п )

3. Запомнить пользователя, чтобы ему не приходилось каждый раз вводить логин/пароль ( если на сесссиях, сессию сохраняю в свою директорию и даю время жизни - месяц )

Как лучше реализовать это?
Сейчас у меня все на сессиях( сессия на фс( файловая система ), планирую сохранять в бд )
Но мне частенько говорят, что лучше сделать на cookie с использованием access_token, но я не до конца понимаю механизм...

Подскажите пожалуйста, буду очень благодарен
  • Вопрос задан
  • 169 просмотров
Решения вопроса 1
@Wol_fi
php, js, mysql, highload
1. Использовать сессии для хранения информации ( Имя, Путь до аватарки, и возраст) - есть страницы где бд не используется, но нужна эта информация и каждый раз делать запрос в бд глупо.

Храните лучше в памяти. В вашем варианте идеально подойдёт redis как сервис для хранения сессий (код переписывать не прийдётся, просто в кофиге ставите session_handler = redis и все ваши $_SESSION автоматически будут хранится в памяти).
2. Манипулировать пользователем если он оффлайн ( разлогинить его и т.п )

3. Запомнить пользователя, чтобы ему не приходилось каждый раз вводить логин/пароль ( если на сесссиях, сессию сохраняю в свою директорию и даю время жизни - месяц )
Как лучше реализовать это?
Сейчас у меня все на сессиях( сессия на фс( файловая система ), планирую сохранять в бд )
Но мне частенько говорят, что лучше сделать на cookie с использованием access_token, но я не до конца понимаю механизм...

Однозначно для этого надо использовать токены. По простому будет примерно так:
Создаёте таблицу tokens(token, userId, lifeTime), генерируете токен как хеш например от айди юзера + соль. Кладёте его в базу с временем действия и в куку юзеру. Дальше смотрите - есть у юзера кука токена - проверяете её хеш - если валиден, смотрите в базу время жизни - если всё ок - авторизуете, иначе - сбрасываете авторизацию.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
Оригинальный подход: сейчас все на сессиях в фс - это нормально, а вот лишний запрос к базе - это почему-то глупо. Давайте все хранить в куках и громоздить постоянные перепроверки того, что пользователь мог туда напихать. А если он, не дай бог, сидит не с одного компьютера, то на другом у него аватарка так и останется старой, пока он не перелогинится. Это же так приятно - разгребать такие мелочи, если они вдруг приведут к проблемам!
Ответ написан
Ваш ответ на вопрос

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

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