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。
以下是我所知道的:
response()-> ... ->cookie('name', 'value')
session
,提供程序设置为App\User
类file
,config为默认的laravel config 我希望的是什么:最佳案例 - 解决问题的方法,或者我可以测试的任何问题和想法,以找出它无效的原因。
答案 0 :(得分:0)
我自己找到了问题的解决方案,这是一件相当奇怪的事情。我所做的是在github上打开laravel存储库并浏览将在请求中加载的所有App文件,并将它们与我的本地版本进行比较。这意味着路由器,控制器,中间件,提供商等。
RouteServiceProvider缺少整个方法。这导致应用程序告诉我,实际上没有应用Web中间件。
也许这是因为之前的开发人员将Laravel更新为最新版本并且没有正确地完成工作。也许是某些Git合并搞砸了。
重点是 - 有时候逐行浏览所有文件并将其与工作版本进行比较是有好处的:)