【问题标题】:Laravel Sanctum returning 401 UnauthorizedLaravel Sanctum 返回 401 Unauthorized
【发布时间】:2021-09-02 02:33:52
【问题描述】:

上下文:

我需要在我的网站中创建一个 SPA 页面,基本上它是一个用户插入其社交号码的投票页面,当单击开始按钮时,我需要登录我为投票创建的用户,使用Sanctum,并获取下一个 Ajax 请求的令牌。

问题:

  1. 我无法使用 Auth:: 对用户进行身份验证,因为它必须无法访问该网站,只能访问此单个页面,如何在控制器中获取用户?它是随请求而来的吗?
  2. 我向验证社交号码输入的函数发出请求,然后为投票用户创建令牌并在请求中返回并保存它,但是当我发出另一个请求并在授权标头中发送令牌时,它总是给我 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


    【解决方案1】:

    问题是路由设置为 middleware('auth') 而不是 'auth:sanctum'

    【讨论】:

      猜你喜欢
      • 2020-10-02
      • 2021-05-28
      • 2015-03-13
      • 2021-09-09
      • 2021-10-19
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      相关资源
      最近更新 更多