Как правильно реализовать авторизацию и аутентификацию на сайте?

Как я понимаю данные пользователя необходимо хранить в БД, запрашивать и сверять их,далее от простого к сложному я пришёл к тому,что для сохранения пользователя на сайте необходимы куки и сессии, их тоже писать в бд? и через какое то время удалять?Вообще могли бы подсказать, как правильно составить алгоритм,как я понимаю большинство используется уже готовые библиотеки, но хотелось бы большей практике,реализовать все это самому.
  • Вопрос задан
  • 620 просмотров
Решения вопроса 1
@ghostiam
На Go писатель, серверов пинатель.
Да, самый простой вариант, это:
Пользователь отправляет нам на сервер логин+пароль.
Сервер сверяет с данными в БД, если всё хорошо, то генерирует большую случайную строку(Токен), которую добавляет как запись в БД (UserID, Token), после этого отправляет клиенту токен, чтоб тот установил у себя его в куки (заголовок Set-Cookie).
Теперь браузер клиента на каждый запрос будет отсылать на сервер куку и мы можем, обращаясь к БД на поиск строки из куки, получать данные о пользователе.
Но так как хранение в БД не всегда эффективно, токены хранят иногда в быстрых БД, таких как Redis или MemCached.

По поводу сессии:
Иногда, чтоб не ходить в главную БД на каждый запрос, некоторые данные выносят из главной БД(В тот же Redis, MemCached или даже просто в файл на диске с именем токена). Просто теперь, хранится не только токен, но и по имени токена сразу же получают некоторые данные, например, что у пользователя ID=42 и что он администратор.

Через какое то время удалять?

День, неделя, несколько часов, зависит от задачи.
Например, некоторые сайты хранят сессию сутки, но если нажать галочку "Запомнить меня", то срок может увеличится до недели или месяца.
Сервисы оперирующие с деньгами или чем-то, что может представлять ценность, делают сессии от 10 минут.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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