Laravel 5.2 Auth不发送cookie

时间:2016-08-18 11:40:55

标签: php laravel cookies laravel-5.2

td; dr:我正在向auth-request发送JSON响应,但缺少会话cookie。

我正在使用类似于Illuminate\Foundation\Auth\AuthenticatesUsers的登录方法。在我的例子中,它以JSON格式发送的响应并没有呈现视图。这是控制器代码:

class DashboardController extends Controller
{
    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

    protected $guard = 'web';

    public function login(LoginRequest $request)
    {
        $throttles = $this->isUsingThrottlesLoginsTrait();

        if ($throttles && $lockedOut = $this->hasTooManyLoginAttempts($request)) {
            $this->fireLockoutEvent($request);

            return $this->sendLockoutResponse($request);
        }

        $credentials = $this->getCredentials($request);
        if (Auth::guard($this->getGuard())->attempt($credentials, $request->has('remember'))) {
            Auth::user()->incrementLoginCounter();
            return $this->handleUserWasAuthenticated($request, $throttles);
        }

        if ($throttles && ! $lockedOut) {
            $this->incrementLoginAttempts($request);
        }
        return $this->sendFailedLoginResponse($request);
    }
}

它与Laravel的Trait基本相同。

问题:响应中没有发送cookie。

以下是我所知道的:

  • 正确设置了数据库中用户表的remember_token列
  • 我可以使用response()-> ... ->cookie('name', 'value')
  • 手动设置Cookie
  • 手动设置的Cookie会在响应中正确发送
  • 保护驱动程序设置为session,提供程序设置为App\User
  • 会话驱动程序为file,config为默认的laravel config
  • 网络中间件与默认相同,Csrf-Middleware在该端点上关闭。

我希望的是什么:最佳案例 - 解决问题的方法,或者我可以测试的任何问题和想法,以找出它无效的原因。

1 个答案:

答案 0 :(得分:0)

我自己找到了问题的解决方案,这是一件相当奇怪的事情。我所做的是在github上打开laravel存储库并浏览将在请求中加载的所有App文件,并将它们与我的本地版本进行比较。这意味着路由器,控制器,中间件,提供商等。

RouteServiceProvider缺少整个方法。这导致应用程序告诉我,实际上没有应用Web中间件。

也许这是因为之前的开发人员将Laravel更新为最新版本并且没有正确地完成工作。也许是某些Git合并搞砸了。

重点是 - 有时候逐行浏览所有文件并将其与工作版本进行比较是有好处的:)