过滤前的Laravel

时间:2013-02-06 08:22:20

标签: laravel

有些人可以指导我这一行,我已经在论坛上阅读了一些博客,但没有清除逻辑

 array('before' => 'auth', 'do' => function()

5 个答案:

答案 0 :(得分:1)

简单地假设您要在执行某项操作之前检查用户是否已登录,而是通过名为过滤器的操作完成。 'before'过滤器意味着在执行操作之前执行过滤器。

有关过滤器的更多信息,请检查this link

示例:

Route::get('home', array('before' => 'auth', 'do' => function()
{
    // your action here
}));


Route::filter('auth',function(){
     if(Auth::guest())
         return Redirect::to('login');

});

答案 1 :(得分:0)

link解释相同。如果当前状态是“认证前”执行功能,那么简单的含义是

当您尝试发布时,如果您尚未登录,则会将您重定向到执行登录目的的function()。这里auth是事件,function是事件处理程序

答案 2 :(得分:0)

这意味着必须在执行“do callback”中的操作之前执行auth过滤器。如果过滤器返回响应(如the CodeHappy example中所示),则不会执行do回调。

答案 3 :(得分:0)

让我们一步一步,

array('before' => 'auth', 'do' => function()

数组参数,

<强>

这是指过滤器。过滤器是在处理请求之前执行的函数。

在上面的例子中, do 部分数组参数指的是将在当前请求中执行的函数。但在此功能执行之前, auth 过滤器会运行。

您还可以使用 之前的 参数指定多个过滤器。

for example: 'before' => array('csrf', 'auth', 'mycustomfilter')

答案 4 :(得分:0)

“auth”过滤器用于在访问函数之前对应用程序中的用户进行身份验证。

让我们考虑一下,您在routes.php中有以下代码

  Route::get('index', array('before' => 'auth', 'do' => function()
  {
       // application logic goes here
  }));

因此,您必须在filters.php文件中进行特定的身份验证过滤,如下所示

1)返回json响应

   Route::filter('auth', function()
   {
      if (!Auth::check()) {
        return Response::json(array('flash' => 'Please log in.'), 401);
      }
   });

2)重定向到登录视图

    Route::filter('auth', function()
    {
       if (!Auth::check()) {
         return Redirect::to('login');
       }
    });