@tosha_lol_daaa

Сервис рестфул или нет?

В качестве практики решил написать стандартный блог на restful api.
Если я правильно понял всю его "логику" конечно.
Сейчас дописал регистрацию с авторизацией. Все тестировал на jquery (ajax), вроде бы все работает.
Так вот, логика:
Идет ajax запрос на /api/v1/auth, передаются логин и пароль. Тут сразу вопрос:
Нужно ли задавать условия на название полей или лучше сделать в качестве массива?
Если валидация не успешна, то я выбиваю json ошибку с кодом 412, если все хорошо - я проверяю соответствие логина и пароля в бд(конечно же я использую password_hash), если не удачно, кидаю Json:
status => error, если все удачно, то в ячейку 'remember_token' пишется рандомное значение и я выдаю его в ответе.
Так вот, правильно ли это? Т.е, сервис по идеи ничего не должен хранить, а клиент должен сохранить этот токен в куки(например), и при каждом запросе слать мне его, и вся "логика" будет через него?
Спасибо
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ответы на вопрос 2
@beatleboy
Код Ошибки по стандарту, надо отдавать в заголовке ответа сервера например - ошибка авторизации Status: 401. А json'ом дополнительно отдаете пояснение ошибки либо дебаг информацию. Кстати говоря у Laravel 5.3 есть готовые роуты для api, - ничего не надо изобретать. Просто бросаете Exception в любой части приложения а Laravel их отлавливает и отдает json.
При успешной авторизации отдаете токен в json. Клиент должен сохранить это у себя, фронтендщики используют local_storage для этого.
Фронт при каждом запросе добавляет в заголовки токен из хранилища, а сервер его валидирует. По стандарту токен должен храниться только у клиента (в отличии от сессии). Также он должен иметь короткий срок жизни. И чуть более длинный срок для рефреша. Т.е. если токен не валидный, то его бросаете на специальный роут, который на его основании выдаст валидный токен.
P.S. реализация JWT для laravel
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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