如何使用axios发送cookie令牌?

时间:2017-09-04 18:17:45

标签: laravel vue.js jwt axios bearer-token

这是我的代码,用于生成将作为Cookie响应的令牌。

public function authenticate(Request $request)
{
    // grab credentials from the request

    $credentials = ['email'=>$request->header('email'),'password'=>$request->header('password')];

    try {
        // attempt to verify the credentials and create a token for the user
        if (! $token = JWTAuth::attempt($credentials)) {
            return response()->json(['error' => 'invalid_credentials'], 401);
        }
    } catch (JWTException $e) {
        // something went wrong whilst attempting to encode the token
        return response()->json(['error' => 'could_not_create_token'], 500);
    }

    return response($token)->cookie(
        'token',$token, 60
    );

}

我正在使用axios来处理它。这是我的代码:

axios({
      method: 'post',
      url: 'http://test.dev/authenticate',
      headers : {
        'email':'test@gmail.com',
        'password':'secret'
      },
      json:true,
    })
 axios({
      method: 'get',
      url: 'http://test.dev/api/users', 
      json:true,
      withCredentials: true
    });

现在,我遇到了如何发送令牌以检索用户列表的问题。我试图添加withCredentials:true但没有运气。

我收到了一个响应错误token_not_provided。

问题:

  1. 如何从响应中获取cookie令牌的值?
  2. 如何使用具有授权承载{token}的axios发送令牌?
  3. 先谢谢你。

2 个答案:

答案 0 :(得分:0)

您需要将令牌添加到axios标头:

headers: {
    'Authorization' : 'Bearer ' + token
}

确保在初次授权后收到token后存储{。}}。

答案 1 :(得分:0)

有必要在您的请求标头中进行设置:

withCredentials: true

然后它将允许您,然后在“授权”参数中设置 cookie,正如我们的朋友在另一个答案中所说:

headers: {
Authorization' : 'Bearer ' + CookieToken,
}