有人可以指导我这一行吗?我已经在论坛上读过一些博客,但没有清除逻辑
array('before' => 'auth', 'do' => function()
简单地假设您想在执行某些操作之前检查用户是否已登录,它由称为过滤器的东西完成。“之前”过滤器意味着在执行操作之前执行过滤器。
有关过滤器的更多信息,请查看此链接
例子:
Route::get('home', array('before' => 'auth', 'do' => function()
{
// your action here
}));
Route::filter('auth',function(){
if(Auth::guest())
return Redirect::to('login');
});
这意味着必须在执行“执行回调”中的操作之前执行身份验证过滤器。如果过滤器返回响应(如CodeHappy 示例中),则不会执行 do 回调。
此链接解释相同。简单的意思是,如果当前状态是“验证前”,则执行该功能。
当您尝试发帖时,如果您没有登录,这会将您重定向到function()
执行登录目的的位置。这auth
是事件,function
是事件处理程序
“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');
}
});
让我们一步一步来,
array('before' => 'auth', 'do' => function()
参数到数组,
前
这是指过滤器。过滤器是在处理请求之前执行的功能。
在上述情况下,数组参数的do部分是指将在当前请求中执行的函数。但在该函数可以执行之前,运行auth过滤器。
您还可以使用before参数指定要执行的多个过滤器。
for example: 'before' => array('csrf', 'auth', 'mycustomfilter')