Всем привет, начал изучать PHP и столкнулся с проблемой.
Я уже несколько раз переписывал систему авторизации пользователя, и каждый раз причиной была моя паранойя, я уже не могу спать, есть и радоваться жизни из за этого=)
Конкретнее о вопросе:
Мне нужно авторизовать пользователя на сайте и поддерживать его как авторизованного.
1) Я должен сам регулировать время сессии пользователя.
2) Пользователя не должно выкидывать с сайта при смене IP.
3) Пользователь должен иметь возможность поддерживать сессии с разных устройств (Войти на один и тот же аккаунт чтобы не выкинуло ни на одном из устройств)
4) Пользователя должно выкидывать с аккаунта на всех устройствах при смене пароля.
Я решил генерировать ключ(токкен) и хранить его в базе. Но столкнулся с проблемой уникальности ключа.
Я хочу записывать в базу информацию о авторизованном пользователе:
id - уникальный идентефикатор сессии;
user - уникальный логин юзера;
time - время жизни сессии;
key - уникальный ключ;
И вот тут я стал, как сделать ключ уникальным, но не использовать в его генерации логин, пароль и ip алресс?
1) Если я использую логин и пароль, как я смогу проверить пользователя, если в обычной сессии PHP мы не храним никакую информацию, так как она временная и ее можно легко угнать.
2) Если при генерации ключа я буду использовать ip, после его смены ключи станут разными.
Я знаю про существование UserAgent, но он не уникальный вообще, большая вероятность того, что данные совпадут.
Подобрался к такому вопросу: Как получить уникальный идентификатор пользователя пришедшего на сайт, без использования ip адреса?
mexsmg, если вам нужно уникальное значение, основанное на данных юзера, чтобы оно было одинаковое на разных устройствах, то это тоже самое что сделать хэш пароля. Берете логин, соль и генерите уникальное значение, sha например.