从Web访问API路由时出现Passport Auth错误

时间:2017-03-27 06:19:57

标签: laravel laravel-5

我使用axios来请求一些需要用户登录的数据。我已经尝试了几件事来让401去,但还没有快乐。 API位于子域中,我认为这可能是我遇到问题的原因。我还将会话设置为.domain.tld

\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class位于网络中间件上。当我使用护照演示时,授权工作正常。但是,当我向子域上的API路由发送axios请求时,它没有任何演示发送到Web路由的Set-Cookie标头。然后我尝试放入window.axios.defaults.headers.common['Authorization'] = 'Bearer (laravel_token here)但也没有运气。

如何使用我的API端点(在api子域上)使用Laravel的应用程序内Passport身份验证?

2 个答案:

答案 0 :(得分:1)

这可能是axios本身的一个问题。请使用Guzzle选择退出其axios的可能性。

$http = new \GuzzleHttp\Client;
$response = $http->request('POST', 'your api url here', [
            'headers' => [
                'Accept' => 'application/json',
                'Authorization' => 'Bearer '.$access_token,
            ],
            'form_params'=>[
                 //if you have any data to send as a post request then put it here.
            ]
        ]);

同样设置Accept参数。给它一个滚动。

答案 1 :(得分:0)

想出来!需要在Axios中启用withCredentials。

axios.defaults.withCredentials = true;