Laravel失败会话(身份验证)

时间:2016-09-15 21:48:04

标签: php laravel

我对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);
}

从那条路线:

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认为我是客人,然后失去了会议?

1 个答案:

答案 0 :(得分:0)

当您执行ajax / api请求时,laravel认为您是访客,因为基于会话的身份验证不适用于此类呼叫。每当您使用auth中间件时,即使您已通过身份验证,您也会在ajax上获得401.

您需要对ajax / api调用进行某种类型的基于令牌的身份验证,这些身份验证会在请求上发送Authentications标头,并为处理身份验证的新中间件发送。