我在考虑是否可以在Laravel中为普通和ajax调用提供单独的过滤器。
我的情况是这样的。每个请求都通过过滤器(对于特定的控制器)。如果用户未登录,则过滤器只会重定向到未记录的页面,提示用户再次登录。如果未登录的用户输入网址并被重定向,这可以正常工作。
但是当发送AJAX请求时,结果将包含未记录的页面。我必须在结果中执行字符串搜索,以检查未记录页面上是否存在某些字符串。
还有其他更好的方法来检查AJAX是否未记录用户。
由于
答案 0 :(得分:1)
内置auth
中间件does this for you automatically。
通过将其添加到您的路线来使用它:
Route::get('foo', ['middleware' => 'auth', 'uses' => 'FooController@foo']);
答案 1 :(得分:0)
如果Lavavel 5属于这种情况,您可以使用$request->ajax()
实现此目的:
if (\Auth::guest())
{
if ($request->ajax())
{
return response('Unauthorized.', 401);
}
else
{
return redirect()->guest('login');
}
}
然后,在您的javascript调用中,您只需阅读响应代码(401)。使用Laravel 4,您可以使用Request::ajax()
来验证当前请求是否通过ajax。