Laravel looses Session ( Authentication)


Laravel looses Session ( Authentication)

我在Laravel上有一个特定的路线问题。当我第二次(有时是第一次)调用一个特定的路由时,我将得到一个401错误,从身份验证中间件返回。

文件中间件/Authenticate.php

class Authenticate
{
/**
 * Handle an incoming request.
 *
 * @param  'Illuminate'Http'Request  $request
 * @param  'Closure  $next
 * @param  string|null  $guard
 * @return mixed
 */
public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->guest()) {
        if ($request->ajax() || $request->wantsJson()) {
            return response('Unauthorized.', 401); // THIS IS CALLED
        } else {
            return redirect()->guest('login');
        }
    }
    return $next($request);
}

From the route:

Route::group(['middleware' => 'auth'], function () {
   .........
   Route::get('events', 'TaskController@events');
});

TaskController.php

public function events(Request $request) {
    $time_from = $request->start;
    $time_to = $request->end;
    $events = array();
    $user_id = Auth::user()->id;
    .....
    return response()->json($events, 200);
}

都是从JQuery $。get请求。我不知道为什么Laravel认为我是一个客人,然后失去了会议?

当你做ajax/api请求laravel认为你是客人,因为基于会话的身份验证不适用于这种类型的调用。无论何时使用身份验证中间件,在ajax上都将获得401,即使您已经过身份验证。

您需要某种类型的基于令牌的ajax/api调用的身份验证,它发送请求的身份验证头和新的中间件来处理它的身份验证