У меня есть NUXT3 laravel10 и приложение Sanctum на локальном хосте, я буду использовать режим SSR
я пытаюсь войти через API, используя метод UseFetch nuxt
{сообщение: «Несоответствие токена CSRF.», исключение: «Symfony \Component\HttpKernel\Exception\HttpException",…}
я получаю код состояния 419 каждый раз
переменная токена не равна нулю
env.php
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=cookie // i set it to cookie
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
kernal.php
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\Cors::class,
\App\Http\Middleware\TrustProxies::class,
\Illuminate\Http\Middleware\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
'api' => [
\Illuminate\Session\Middleware\StartSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\Cors::class,
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
config/cros.php
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*','http://localhost:3000'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => true,
config/sanctum.php
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
Sanctum::currentApplicationUrlWithPort()
))),
во внешнем интерфейсе
store/auth.js
async function signIn() {
// Fetch the CSRF token cookie
try {
await useFetch("http://localhost:8000/sanctum/csrf-cookie", {
credentials: "include",
});
// Get the CSRF token from the cookie
const token = getCookie("XSRF-TOKEN");
if (!token) {
console.error('CSRF token not found');
return;
}
// Set CSRF tokens in cookies (if needed)
setCookie('X-CSRF-TOKEN', token);
setCookie('X-XSRF-TOKEN', token);
// Perform login request
const res = await useFetch(backendUrl + "/login", {
credentials: "include",
method: 'POST',
mode: 'cors',
body: JSON.stringify({
username: 'kminchelle',
password: '0lelplR',
}),
headers: {
"Accept": "application/json",
'Content-Type': 'application/json',
"X-CSRF-TOKEN": token,
"X-XSRF-TOKEN": token,
},
});
// Check for response errors
if (!res.ok) {
const errorData = await res.json();
console.error('Failed to sign in:', errorData.message || res.statusText);
if (res.status === 419) {
// Handle CSRF token expiration
location.reload();
}
return;
}
// Process successful login
const data = await res.json();
localStorage.setItem('Atoken', data.token);
console.log('User:', data);
} catch (error) {
console.error('Failed to sign in:', error);
console.log(document.cookie);
}
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... -3-laravel
Несоответствие CSRF nuxt 3 – laravel ⇐ Php
Кемеровские программисты php общаются здесь
1722122262
Anonymous
У меня есть NUXT3 laravel10 и приложение Sanctum на локальном хосте, я буду использовать режим SSR
я пытаюсь войти через API, используя метод UseFetch nuxt
{сообщение: «Несоответствие токена CSRF.», исключение: «Symfony \Component\HttpKernel\Exception\HttpException",…}
я получаю код состояния 419 каждый раз
переменная токена не равна нулю
[b]env.php[/b]
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=cookie // i set it to cookie
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
[b]kernal.php[/b]
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\Cors::class,
\App\Http\Middleware\TrustProxies::class,
\Illuminate\Http\Middleware\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
'api' => [
\Illuminate\Session\Middleware\StartSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\Cors::class,
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
[b]config/cros.php[/b]
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*','http://localhost:3000'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => true,
[b]config/sanctum.php[/b]
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
Sanctum::currentApplicationUrlWithPort()
))),
во внешнем интерфейсе
[b]store/auth.js[/b]
async function signIn() {
// Fetch the CSRF token cookie
try {
await useFetch("http://localhost:8000/sanctum/csrf-cookie", {
credentials: "include",
});
// Get the CSRF token from the cookie
const token = getCookie("XSRF-TOKEN");
if (!token) {
console.error('CSRF token not found');
return;
}
// Set CSRF tokens in cookies (if needed)
setCookie('X-CSRF-TOKEN', token);
setCookie('X-XSRF-TOKEN', token);
// Perform login request
const res = await useFetch(backendUrl + "/login", {
credentials: "include",
method: 'POST',
mode: 'cors',
body: JSON.stringify({
username: 'kminchelle',
password: '0lelplR',
}),
headers: {
"Accept": "application/json",
'Content-Type': 'application/json',
"X-CSRF-TOKEN": token,
"X-XSRF-TOKEN": token,
},
});
// Check for response errors
if (!res.ok) {
const errorData = await res.json();
console.error('Failed to sign in:', errorData.message || res.statusText);
if (res.status === 419) {
// Handle CSRF token expiration
location.reload();
}
return;
}
// Process successful login
const data = await res.json();
localStorage.setItem('Atoken', data.token);
console.log('User:', data);
} catch (error) {
console.error('Failed to sign in:', error);
console.log(document.cookie);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78802665/csrf-mismatch-nuxt-3-laravel[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия