0

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

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

5 回答 5

1

简单地假设您想在执行某些操作之前检查用户是否已登录,它由称为过滤器的东西完成。“之前”过滤器意味着在执行操作之前执行过滤器。

有关过滤器的更多信息,请查看此链接

例子:

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


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

});
于 2013-02-06T22:48:28.603 回答
0

这意味着必须在执行“执行回调”中的操作之前执行身份验证过滤器。如果过滤器返回响应(如CodeHappy 示例中),则不会执行 do 回调。

于 2013-02-06T08:50:01.677 回答
0

链接解释相同。简单的意思是,如果当前状态是“验证前”,则执行该功能

当您尝试发帖时,如果您没有登录,这会将您重定向到function()执行登录目的的位置。这auth是事件,function是事件处理程序

于 2013-02-06T08:29:46.127 回答
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');
       }
    });
于 2014-09-16T05:47:14.943 回答
0

让我们一步一步来,

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

参数到数组,

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

在上述情况下,数组参数的do部分是指将在当前请求中执行的函数。但在该函数可以执行之前,运行auth过滤器。

您还可以使用before参数指定要执行的多个过滤器。

for example: 'before' => array('csrf', 'auth', 'mycustomfilter')
于 2014-04-26T19:43:42.630 回答