1

我正在尝试查看用户是否登录到当前的网络浏览器,所以我想检查带有 id 的用户令牌,以便 chrome 扩展程序开始工作。

$.ajax({
            url: "https://factstart.herokuapp.com/api",
            type: 'GET',
            // headers: { 'Content-Type': 'application/json'},
            // Fetch the stored token from localStorage and set in the header
            headers: {
                "Authorization": localStorage.getItem('data'),
                'Content-Type': 'application/json'
            },
            success: function(token) {
                    var data = jQuery.parseJSON(token);
                    console.log(data);
                    var id = data.id;
            },
});

所以我使用 laravel 包频谱在 chrome dev 中生成 web 令牌,它可以找到 get token 和 id

但是当我在实际站点中运行时,它会抛出VM9360:1 Uncaught SyntaxError: Unexpected token < in JSON at position 0这个错误并且它是一个未记录的页面,那么如何克服这个问题呢?

这是访问令牌的 PHP 代码

     public function token(Request $request) {
        
              if (Auth::user()) {
                $data = array();
            // $user = request()->user();
            $data['id'] = request()->user()->id;
            $data['token'] = request()->user()->tokens()->where('tokenable_id', $data['id'])->get('token')
            ->first()->token;
            return json_encode((array) $data);

    } else {
        return "Login to get data";
    }
}

// 为了清楚起见,添加了额外的细节

当我像在扩展中刷新一样运行代码时,令牌会获得身份验证。同时,当我在 Web 选项卡中刷新时,它会将我带到登录屏幕。还有我在content.js中写的js代码。因此,我将首先检查用户是否已登录,然后 chrome 扩展程序应该开始工作。

4

1 回答 1

0

将您的授权设置为Bearer ${token} And useauth('sanctum')->user()而不是Auth::user()

于 2021-01-10T14:29:00.467 回答