用于检查ajax请求是否经过身份验证的中间件无效

时间:2017-09-07 12:57:21

标签: ajax laravel session middleware

我正在尝试处理从空闲/过期会话启动的ajax请求(可能页面处于打开状态且会话已过期)。我编写了下面的中间件,但它没有按预期工作:

namespace App\Http\Middleware;

use Closure;

class AjaxSessionCheck
{
/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
    public function handle($request, Closure $next)
    {
        if(!\Auth::check())
        {
            if($request->ajax())
            {
                return response()->json(['Session_error'=>'Session Expired'], 401);
                //throw new AuthenticationException('Unauthenticated');
            }
        }

        return $next($request);
    }
}

要检查这是否有效,我从两个单独的选项卡登录到包含表单的同一页面,然后从其中一个选项卡中注销,使得会话在另一个选项卡上也无效。然后我发起了一个ajax请求(用户单击一个删除按钮)。

非常感谢任何对正确方向的帮助!

1 个答案:

答案 0 :(得分:0)

为了更好地覆盖使用if ($request->isJson() || $request->wantsJson()) {