使用Cookie在响应工厂Laravel上不存在

时间:2019-11-27 08:06:14

标签: laravel

我正在尝试从Laravel后端向前端返回一个带有响应的cookie键值,但是出现错误提示

public function login(UserLoginRequest $request)
{
    if(Auth::attempt(['email' => $request->get('email'), 'password' => $request->get('password'), 'role' => 'user'])){
        $user = Auth::user();
        $success['token'] =  $user->createToken('AppName')->accessToken;
        $success['user'] = new AppUser($user);
         return response()->WithCookie(cookie('token', $success['token'], $minute = 10))->json(['success' => $success], 200);
    }  else {
        return response()->json(['errors']);
    }
}

这是我的控制者。

    Headers: ["*"]

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

response()返回响应工厂;它本身不是响应。您必须在Response Factory上调用一个方法以获取Response对象,就像在其上调用json(...)一样。

您需要在Response对象而不是Response Factory上调用withCookie

return response()
    ->json(['success' => $success], 200)   // JsonResponse object
    ->withCookie(cookie('token', $success['token'], $minute = 10));

您现在正在作为响应对象的JsonResponse对象上调用withCookie