在Laravel中检测未经身份验证的ajax请求

时间:2017-09-09 14:59:20

标签: ajax laravel

我正在尝试处理从空闲/过期会话启动的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);
        }
    }
    return $next($request);
}
}

我还尝试将此代码添加到Auth中间件,但没有运气。 奇怪足够的身份验证(用户登录)ajax请求被此检测到。

失去2天寻找解决方案。绝望的电话在这里。

2 个答案:

答案 0 :(得分:0)

使用优化的代码进行性能使用auth :: check和request-> ajax()在AND运算符的相同if条件下。只需在配置文件中尝试会话到期

答案 1 :(得分:0)

这是因为会话在中间件之后运行,你可以在这里看到reference。如果您想检查该会话是否已过期,我认为您应该使用中间件而不是中间件之前