Laravel Sanctum возвращает 401 Unauthorized

Контекст:

Мне нужно создать страницу на моем веб-сайте, которая является SPA, в основном это страница голосования, на которой пользователь вставляет свой социальный номер, и когда нажимается кнопка «Пуск», мне нужно войти в систему пользователя, которого я создал для голосования, используя Sanctum и получите токен для следующих Ajax-запросов.

Проблемы:

  1. Я не могу аутентифицировать пользователя с помощью Auth::, потому что он не должен иметь доступа к веб-сайту, только к этой странице, как я могу получить пользователя в контроллере? он приходит с запросом?
  2. Я делаю запрос к функции, которая проверяет ввод социального номера, а затем создаю токен для голосующего пользователя, возвращаю запрос и сохраняю его, но когда я делаю другой запрос и отправляю токен в заголовке авторизации, он всегда дает мне ошибка 401 Неавторизованная.

Подтвердить социальный номер и функцию токена возврата:

 public function verifyNIF(Request $request){
    $nif = $request->nif;
    $slug = $request->slug;

    //TODO:validates NIF in DB

    $user = CbsHelpers::getInPersonUser();


    $token = $user->createToken('in-person-token')->plainTextToken;


    return response()->json([
        'user' => $user,
        'token' => $token,
    ]);



}

Ajax-запрос с токеном в заголовке авторизации (возвращает 401 Unauthorized)

 function voteInPerson(topic){
    let topicId = topic.data('topic-id');
    $.ajax({
        url: "/vote",
        type: "POST",
        headers: {
            Authorization: 'Bearer '+token
        },
        data: {

            slug: slug,
            topicId: topicId,
        },
        success: function (data) {
            if (data === "no available votes" && topic.hasClass("not-voted")) {
                showWarningModal(data);
            }
            else {
              changeTopicVote(topic, data);
            }
        },
        error: function (data) {
            if (data.status === 401)
                showWarningModal("login needed");
        }
    });
}

person ajms    schedule 17.06.2021    source источник


Ответы (1)


Проблема заключалась в том, что маршрут был установлен на промежуточное ПО ('auth') вместо 'auth: Sanctum'

person ajms    schedule 17.06.2021