【问题标题】:Can I create Route::filter with another filter in laravel?我可以在 laravel 中使用另一个过滤器创建 Route::filter 吗?
【发布时间】:2014-05-20 11:32:54
【问题描述】:

我正在使用 Laravel 4,我想使用一个过滤器,该过滤器反过来检查另一个过滤器。以下是一段代码。

Route::filter('auth', function()
{
    if(Auth::check()) {
    // write code here
    }
});

Route::filter('logged_in_as_user',array('before'=>'auth', function()
{
    // check if user is a normal user
}));

Route::filter('logged_in_as_admin', array('before'=>'auth', function()
{
    // check if user is a admin user
}));

Route::get('user/dashboard',array('before'=>'logged_in_as_user', function() {
   //make view
}));

Route::get('user/dashboard',array('before'=>'logged_in_as_admin', function() {
   //make view
    }));

Route::post('/login', function()
{
    Auth::attempt( array('email' => Input::get('email'), 'password' => Input::get('password')) );
    if(Auth::check()) {
        return Redirect::to('user/dashboard');
    } else {
        return Redirect::to('user/login')->with('flash_error', 'User Name or password not match');
    }
});

这更像是我想要拥有基于角色的身份验证。

我得到一个错误

call_user_func_array() 期望参数 1 是一个有效的回调, 第二个数组成员不是有效的方法

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    你不能,因为 filter() 只接受第二个参数中的闭包:

    public function filter($name, $callback)
    {
        $this->events->listen('router.filter: '.$name, $this->parseFilter($callback));
    }
    

    但是你可以使用路由组:

    Route::group(['before' => 'auth'], function()
    {
    
        Route::group(['before' => 'logged_in_as_user'], function()
        {
            Route::get('user/dashboard', function() {
                //make view
            });
        }
    
        Route::group(['before' => 'logged_in_as_admin'], function()
        {
            Route::get('user/dashboard', function() {
                //make view
            });
        }
    
    });
    

    当然,正常创建过滤器:

    Route::filter('logged_in_as_user', function()
    {
        // check if user is a normal user
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      相关资源
      最近更新 更多