Я получаю 401 Unauthorized при доступе к защищенным маршрутам с использованием файлов cookie только http в Laravel с помPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Я получаю 401 Unauthorized при доступе к защищенным маршрутам с использованием файлов cookie только http в Laravel с пом

Сообщение Anonymous »

Я работаю над приложением Laravel с аутентификацией JWT и пытаюсь использовать для аутентификации файлы cookie только для http. Несмотря на правильную настройку файла cookie при входе в систему, я все еще получаю ошибку 401 Unauthorized при доступе к защищенным маршрутам с помощью axios. Вот моя установка

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

$token = JWTAuth::claims($claims)->fromUser($user);
$cookie = Cookie::make('auth_token', $token, 60, null, null, false, true, false, 'Strict');

if ($user->status == 'active' && $user->is_verified == 1) {
return response()->json([
'message' => 'User logged in successfully',
'token' => $token,
'user' => UserService::data($user->id)
], 200)->withCookie($cookie)
->header('Access-Control-Allow-Credentials', 'true')
->header('Access-Control-Allow-Origin', 'http://localhost:5173')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
->header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
}

Конфигурация Axios

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

public async apiRequest(endpoints: { [key: string]: Record }, method: string = 'POST'): Promise {
axios.defaults.withCredentials = true;
const axiosInstance: AxiosInstance = axios.create({
baseURL: this.url,
withCredentials: true,
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest',
},
timeout: 40000,
});

const payload: { [key: string]: string } = {};

for (const [endpoint, data] of Object.entries(endpoints)) {
const pre= `__${endpoint}`;
payload[pre] = encryptData(data);
}

try {
const response: AxiosResponse = await axiosInstance.request({
url: '/request.json',
method: method,
data: JSON.stringify(payload)
});

return response;

} catch (error: any) {
if (axios.isAxiosError(error) && error.response?.status === 401) {
this.logout();
}
console.error('Error making request:', error);
throw error;
}
}
Мое промежуточное программное обеспечение

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

Route::group(['middleware' => 'api'], function ($router) {
Route::match(['GET', 'POST', 'PUT', 'PATCH', 'DELETE'], 'action.json', [RequestController::class, 'handle']);
Route::post('/request.json', [ApiController::class, 'handle']);
});

public function __construct()
{
$this->middleware('auth:api', ['except' => ['login', 'signup', 'password/reset', 'reset', 'test', 'getUser']]);
}
Даже при таких настройках я по-прежнему получаю ошибку 401 «Несанкционировано» при попытке доступа к защищенным маршрутам.
Как устранить ошибку 401 «Несанкционировано» и убедиться, что мои файлы cookie только для http правильно распознаются для аутентификации в Laravel?
Вот что я пробовал:
  • Гарантировано что для параметра support_credentials установлено значение true и разрешен правильный источник.
  • Установите withCredentials: true в запросе axios.
  • Проверено, что маршруты защищены с правильным промежуточным программным обеспечением.
Я хотел иметь возможность выполнять вызовы API на сервер без необходимости сохранять токен на клиенте.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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