有些人可以指导我这一行,我已经在论坛上阅读了一些博客,但没有清除逻辑
array('before' => 'auth', 'do' => function()
答案 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');
}
});