Запросы Laravel 11 Sanctum от React выдают 400 ошибокPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Запросы Laravel 11 Sanctum от React выдают 400 ошибок

Сообщение Anonymous »

Следуя документации Laravel 11, я добавил Sanctum с помощью следующей команды:
php artisan install:api
Я обновил модель пользователя до следующее:

Код: Выделить всё

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
.....
cors.config

Код: Выделить всё

return [
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => true,
];
sanctum.php
используйте Laravel\Sanctum\Sanctum;

Код: Выделить всё

return [

'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
Sanctum::currentApplicationUrlWithPort()
))),
'guard' => ['web'],
'expiration' => null,
'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''),
'middleware' => [
'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class,
'encrypt_cookies' => Illuminate\Cookie\Middleware\EncryptCookies::class,
'validate_csrf_token' => Illuminate\Foundation\Http\Middleware\ValidateCsrfToken::class,
],
];
маршрут api.php выглядит так

Код: Выделить всё

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\CourseController;
use App\Http\Controllers\Api\AuthController;

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});

Route::get('courses', [CourseController::class, 'list']);//->middleware('auth:sanctum');

Route::post('login', [AuthController::class, 'login']);
Route::post('logout', [AuthController::class, 'logout']);
Route::post('register', [AuthController::class, 'register']);
Не буду вставлять всю логику AuthController, чтобы не раздувать вопрос, но логин выглядит следующим образом:

Код: Выделить всё

public function login(Request $request)
{
try {
$credentials = $request->only('email', 'password');

if(!Auth::attempt($credentials)) {

return response()->json([
'status' => false,
'message' => "Credentials don't match.",
], 401);
}

$user = User::where('email', $request->email)->first();

return response()->json([
'status' => true,
'message' => 'user logged in successfully',
'token' => $user->createToken("API TOKEN")->plainTextToken
], 200);

} catch(\Exception $e) {
return response()->json([
'status' => false,
'message' => $e->getMessage(),
]);
}
}
Когда я захожу в почтальон, я могу войти в систему.
Как моя страница входа в React выдает ошибку 419 при попытке войти в систему:< /p>
Страница реагирования выглядит следующим образом:

Код: Выделить всё

import React, { useState } from 'react';
// import { useAuth } from '../AuthContext';
import { login } from '../authService';
import axios from 'axios'

const Login = () => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
// const { setUser } = useAuth();

const handleSubmit = async (e) =>  {
e.preventDefault();
try {
// const user = await login(email, password);
// setUser(user);
const user = await axios.post('http://localhost:8000/api/login', {
email: email,
password: password
});

} catch (error) {
console.error('Login failed', error);
}
};

return (


Login


Email
 setEmail(e.target.value)}
required
className="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"
/>

Password
 setPassword(e.target.value)}
required
className="mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"
/>


Login





);
};

export default Login;
Мой Laravel находится по адресу http://127.0.0.1:8000/
Сайт React находится по адресу http://localhost:3000, который теоретически был очищен конфигурация Sanctum.
Как я могу разрешить моему приложению React аутентифицироваться и гарантировать, что я могу отправлять запросы к другим конечным точкам, защищенным промежуточным программным обеспечением Sanctum?
Я покопался довольно много, и найденные на данный момент ответы кажутся устаревшими :(

Подробнее здесь: https://stackoverflow.com/questions/786 ... 400-errors
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Запросы Laravel 11 Sanctum от React выдают 400 ошибок
    Anonymous » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Почему запрос axios /sanctum/csrf-cookie в vuejs для laravel Sanctum возвращает 204 No Content?
    Anonymous » » в форуме Php
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Неожиданный 302 перенаправление после успеха входа в систему с использованием Sanctum Laravel Sanctum
    Anonymous » » в форуме Php
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Аутентификация API API Token Sanctum Sanctum не работает в почтальстве
    Anonymous » » в форуме Php
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • Почему определенные строки, закодированные в URL-адресе, выдают 400 неверных запросов [закрыто]
    Гость » » в форуме JAVA
    0 Ответы
    56 Просмотры
    Последнее сообщение Гость

Вернуться в «Php»