响应工厂 Laravel 上不存在 Cookie

Pat*_*emi 3 laravel

我正在尝试将 cookie 键值与我从 laravel 后端的响应返回到我的前端,但我收到一个错误消息

Method Illuminate\Routing\ResponseFactory::withCookie does not exist.
Run Code Online (Sandbox Code Playgroud)

这是我的控制器。

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']);
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

lag*_*box 9

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

您需要调用withCookieResponse 对象,而不是 Response Factory:

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

您现在正在调用withCookieJsonResponse 对象,它是一个 Response 对象。