Контекст:
Мне нужно создать страницу на моем веб-сайте, которая является SPA, в основном это страница голосования, на которой пользователь вставляет свой социальный номер, и когда нажимается кнопка «Пуск», мне нужно войти в систему пользователя, которого я создал для голосования, используя Sanctum и получите токен для следующих Ajax-запросов.
Проблемы:
- Я не могу аутентифицировать пользователя с помощью Auth::, потому что он не должен иметь доступа к веб-сайту, только к этой странице, как я могу получить пользователя в контроллере? он приходит с запросом?
- Я делаю запрос к функции, которая проверяет ввод социального номера, а затем создаю токен для голосующего пользователя, возвращаю запрос и сохраняю его, но когда я делаю другой запрос и отправляю токен в заголовке авторизации, он всегда дает мне ошибка 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");
}
});
}