【发布时间】:2021-09-02 02:33:52
【问题描述】:
上下文:
我需要在我的网站中创建一个 SPA 页面,基本上它是一个用户插入其社交号码的投票页面,当单击开始按钮时,我需要登录我为投票创建的用户,使用Sanctum,并获取下一个 Ajax 请求的令牌。
问题:
- 我无法使用 Auth:: 对用户进行身份验证,因为它必须无法访问该网站,只能访问此单个页面,如何在控制器中获取用户?它是随请求而来的吗?
- 我向验证社交号码输入的函数发出请求,然后为投票用户创建令牌并在请求中返回并保存它,但是当我发出另一个请求并在授权标头中发送令牌时,它总是给我 401 Unauthorized 错误。
验证社交号并返回token功能:
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 未授权)
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");
}
});
}
【问题讨论】:
标签: php ajax laravel laravel-sanctum