Задать вопрос
@dk-web

Как и когда получать токен Laravel Sanctum для мобильного приложения?

Доброго дня!
Использую Laravel для api плюс простой сайтик на Vue.
Настроено через breeze и sanctum.

Сделал простое приложение на Nativescript-Vue. Создам пару вопросов, так как без бубна не получается запустить.

Первый собственно в теме - get запросы к web (пока) роутам работают. Однако, чтобы залогиниться надо отправлять post.
И конечно я получаю 419 ошибку "page expired".

Если в laravel отключить VerifyCsrfToken для этого роута, то все работает. Но по идее же не так должно быть?

login()  {
    Http.request({
  url: "https://palpably-neutral-greyhound.cloudpub.ru:443/login",
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  content: JSON.stringify({
        email: "admin@example.com",
        password: "1111"
    })
}).then(
  (response) => {
    console.log(response)
  },
  (e) => {
    // error
    console.log(e)
  },
)

Или по аналогии с запросом к sanctum/csrf-cookie в spa - надо запросить токен, его сохранить и уже потом прикреплять к запросам?
Но токен же создается для конкретного пользователя. Тоже ерунда получается.

И вообще вроде бы санктум сам определяет откуда идет запрос - сайт или мобильное приложение.
Вроде все перерыл, везде написано что возможна гибридная система, но пока унифицировать не получается.
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    PHP-фреймворк Laravel
    2 месяца
    Далее
  • Яндекс Практикум
    Фулстек-разработчик расширенный
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Fragster
@Fragster
помогло? отметь решением!
именно при разработке, когда dev фронт висит на localhost:3000, а dev бэк висит на 127.0.0.1:8000 часто нужно поправить config/sanctum.php, удалив упоминание фронта, примерно таким образом:
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
    '%s%s',
    '127.0.0.1,127.0.0.1:8000,::1',
    Sanctum::currentApplicationUrlWithPort()
  ))),
или каким-то похожим образом.

при этом на проде все бы работало, потому что прод фронт был бы не в списке stateful доменов (к которым требуется CSRF токен)
Ответ написан
Комментировать
Astatroth
@Astatroth
Я тут случайно
419 ошибка потому, что у вас маршруты за web миддлварем, а должны быть за api, причем там еще должен быть подключена sanctum аутентификация.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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