gpt4 book ai didi

php - 在 Laravel 中使用路由过滤器

转载 作者:可可西里 更新时间:2023-11-01 13:13:32 26 4
gpt4 key购买 nike

我正在尝试在 laravel 中使用路由过滤器来检查特定用户是否可以访问页面:

Route::filter('check_roles', function()
{
$current_url = URI::current();
$access = 0;
$nav = Session::get('navigation');
foreach($nav as $k => $n){
if(in_array($current_url, $n)){
$access = 1;
}
}

if($access == 0){
return Redirect::to('home');
}
//problem is if the user has access to the page a blank page is returned

});

我在这样的 route 使用它:

Route::get('admin/(:all)', array('before' => 'check_roles'));

问题是如果用户有权访问该页面,则会返回一个空白页面。如果用户具有访问权限,我如何继续执行默认 Controller 操作?

最佳答案

Route::get() 替换为 Route::filter('pattern: admin/*', 'check_roles');

现在每次包含此模式的请求都会调用您的 check_roles 过滤器。我认为这是您当前需要的,而不是 Route::get(),

您可以在单个页面上使用 Route::get()

Route::get('supersecret', array('before' => 'check_roles'), function()
{ return View::make('mysecret') });

了解更多信息 Routing - Filters

更新以反射(reflect)我对评论的建议。

您可以创建一个 Admin_Controller 来扩展您的 Base_Controller 并将您的身份验证过滤器放在 __construct() 中。

class Admin_Controller extends Base_Controller {
public function __construct()
{
parent::__construct();
$this->filter('before', 'auth');
}
}

在您的 start.php 中注册此 Controller (搜索 Autoloader,您的 base_controller 已映射到该位置)。

现在,只要您想保护您的区域,您就可以扩展您的 Admin_Controller

class Pages_Controller extends Admin_Controller {
// do cool stuff
}

希望对你有帮助

关于php - 在 Laravel 中使用路由过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13657921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com