目前我有一个带有构造方法的 AdminContoller 来处理一些之前的过滤器。有没有办法对除一个之外的所有控制器方法进行前置过滤?
我将 Entrust 用于角色和权限,但这段代码让我陷入了无限的重定向循环。我根本没有以用户身份登录。因此,此代码应将我重定向到附加到未过滤的 AdminController@adminLogin 方法的 /admin/login url。但它没有?
// AdminController.php 文件
class AdminController extends BaseController {
function __construct() {
// Is something like this possible?
$this->beforeFilter('admin', array('except' => array('adminLogin')));
$this->beforeFilter('csrf', array('on' => 'post'));
}
public function index()
{
return "Admin - Index";
}
public function adminLogin()
{
return "Admin Login Form";
}
// ... and many more methods
}
// 过滤器.php 文件
Route::filter('admin', function()
{
if( !Entrust::hasRole('admin') ) // Checks the current user
{
return Redirect::to('/admin/login');
}
});
// Routes.php 文件
Route::resource('admin', 'AdminController');
Route::get('/admin/login', 'AdminController@adminLogin');