laravel用于普通和ajax调用的单独过滤器

时间:2015-05-05 02:15:38

标签: session laravel filter

我在考虑是否可以在Laravel中为普通和ajax调用提供单独的过滤器。

我的情况是这样的。每个请求都通过过滤器(对于特定的控制器)。如果用户未登录,则过滤器只会重定向到未记录的页面,提示用户再次登录。如果未登录的用户输入网址并被重定向,这可以正常工作。

但是当发送AJAX请求时,结果将包含未记录的页面。我必须在结果中执行字符串搜索,以检查未记录页面上是否存在某些字符串。

还有其他更好的方法来检查AJAX是否未记录用户。

由于

2 个答案:

答案 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。