Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
День добрый.
Сейчас начал изучать vuejs для дальнейшего использования. И как видно, вью можно использовать двумя способами, в чистом виде(далее api calls на бекенд laravel) и в тесной связке(что идет сразу из коробки).
Но образовались вопросы, в основном касающиеся авторизации и использование vuex.
К примеру очень болезная тема Auth, все делал по гайду, но при авторизации вроде бы все идет хорошо, получаю токен, храню в браузере, но при попытке получить инфу о юзере (api/user) - 401.
И ещё смотрел много примеров, и везде разный подход, кто-то делает роуты в перемешку с веб, а кто-то чисто веб или апи. Может есть какой-то стандарт все-таки?
И ещё хотел уточнить один вопрос, опять же касающийся Авторизации (laravel + vuejs). При использовании passport, да и вообще общение по api с ларой, нужно переопределять контроллеры для авторизации/регистрации? Или можно юзать дефолтные (make:auth) и далее Route::Auth ?
Сейчас это для меня самые проблемные моменты (vuejs api auth with laravel), может кто подскажет, что я олень делаю не так?:)
Не в сети
Дружище, привет. по вопросу 401
если ты используешь пасспорт, то убедись что добавил middleware который будет генерить токен при запросах из vue к бэкенду
'web' => [
// Other middleware...
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],
таким образом, тебе не нужно получать токен руками, когда ты используешь свой же API из своего же фронтенда. Ларавел будет это делать за тебя, а токен потребуется только для сторонних приложение (мобильное приложение, которое будет использовать тот же api)
Изменено code_bright_anywhere (10.03.2018 14:51:35)
Пишу бэкенд для своего мобильного приложения, делюсь с миром, заходите посмотреть, много всего интересного https://youtu.be/C5M6-ycJ5gs
Не в сети
Далее, по поводу именования роутов
тут многое зависит от того, что за приложение ты строишь. если это будет апи например для мобильного приложения, то имеет огромный смысл все роуты писать в routes/api.php. по причинам описанным тобою выше — токен авторизация из коробки.
Если это просто веб приложение, на которое ты хочешь натянуть vue на фронтенде, можно обойтись вообще без routes/api и писать все в web.php. и просто отдавать ответы в виде json ответов. в этом случае не подразумевается аутентификация по токенам, и соответственно паспорт не нужен, аутентификация будет происходить по сессии, и слой усложнений в виде паспорта и поддержки аутентификации по токенам здесь излишний
если ты хочешь префиксовать роуты на которые vue будет делать запросы как /api но у тебя не чистый API для стороннего приложения, никаких проблем, объявим роут группу в web.php с префиксом api, и пиши их там.
Изменено code_bright_anywhere (10.03.2018 14:58:21)
Пишу бэкенд для своего мобильного приложения, делюсь с миром, заходите посмотреть, много всего интересного https://youtu.be/C5M6-ycJ5gs
Не в сети
Дефолтные контроллеры приведены просто как пример. опять же, если у тебя апи для стороннего приложения, ты скорее всего захочешь отдавать ответ отличный от того, что предлагают дефолтные контроллеры. в этом случае и логика их поменяется, например, при регистрации тебе нужно будет генерить токен для нового юзера и отдавать его в ответе, чтобы твое мобильное приложение использовало его в последующих запросах.
если же у тебя просто веб приложение, легко можешь использовать дефолтные контроллеры, например переопредлив в контроллере метод из трейта
protected function authenticated(Request $request, $user)
{
// вместо редиректа по дефолту вернем какой-то json response
return response()->json(['status' => 'OK']);
}
Пишу бэкенд для своего мобильного приложения, делюсь с миром, заходите посмотреть, много всего интересного https://youtu.be/C5M6-ycJ5gs
Не в сети
code_bright_anywhere, спасибо за советы.
Касательно ошибки 401, разобрался, как оказалось в axios, не передавал хедерсы (Accept: application/json, Authorization: 'Beare ' + token).
А за роуты, то вариации зависят от ситуации. В моём случаи, было построенно апп для веба, а уже потом появилась надобность лару сделать в качестве бекенда, а фронт на vue.
Не в сети
Страницы 1