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