Реализовать токен для аутентификации API Laravel 4 RESTful

Я начинаю работать с Laravel 4 framework и PHP.

В настоящее время я пытаюсь выполнить простой процесс проверки подлинности между клиентским приложением и сервером.

Ниже мой планируемый подход:

  • Клиент регистрируется на сервере с помощью запроса GET с именем пользователя и паролем.

  • Сервер проверяет и возвращает строку токена в случае успеха. Строка токена будет закодирована (hashed?) С именем пользователя, паролем и временем истечения срока действия.

  • Клиент отправляет запрос, включая указанный токен. Сервер будет проверять токен (декодировать его → проверить имя пользователя/пароль и истекшее время). В случае успеха он обработает запрос клиента.

Каков наилучший способ генерации токена с указанными выше параметрами и декодирование его на стороне сервера?

Спасибо, и я ценю ваше время и помощь.

Ответ 1

Я не думаю, что неплохо хранить имя пользователя и пароль, закодированные в каком-то токене. Вместо этого создайте случайный токен после успешного входа в систему и сохраните данные, связанные с токеном на стороне сервера.

Вы можете записать запись о каждом входе в таблицу с столбцами token, user_id, valid_until. После каждого запроса найдите токен в базе данных, проверьте, действительно ли он действителен, и используйте user_id для аутентификации.

Вы можете думать о маркете как о единовременном пользователе и пароле, например. рассмотрите первые 8 символов токена как временного имени пользователя, а остальное как пароль, если вам неловко задавать доступ без пароля:)

Также вы можете запустить некоторое задание cron для удаления устаревших записей из базы данных каждый день или около того.

Ответ 2

Вы можете использовать веб-маркеры JWT JSON для аутентификации, чтобы полностью исключить сеансы и файлы cookie. Подобный подход используется Facebook. Как только вы входите в систему с помощью электронной почты и pwd, вы получаете сетевой токен, поэтому даже если его взломали, вы не сможете получить из него pwd. Вы можете установить для ограничения срока действия токена.