use*_*269 6 php laravel laravel-3
我正在尝试在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
});
Run Code Online (Sandbox Code Playgroud)
我在这样的路线中使用它:
Route::get('admin/(:all)', array('before' => 'check_roles'));
Run Code Online (Sandbox Code Playgroud)
问题是如果用户有权访问该页面,则返回空白页面.如果用户有权访问,如何继续使用默认控制器操作?
afa*_*zit 11
替换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') });
有关更多信息路由 - 过滤器
更新以反映我对评论的建议.
你可以创建一个Admin_Controller扩展你的,Base_Controller并在你的身份验证过滤器__construct().
class Admin_Controller extends Base_Controller {
public function __construct()
{
parent::__construct();
$this->filter('before', 'auth');
}
}
Run Code Online (Sandbox Code Playgroud)
让这个控制器在你的start.php中注册(搜索autoloader,你的base_controller被映射到哪里).
现在,您可以Admin_Controller随时随地扩展您的区域.
class Pages_Controller extends Admin_Controller {
// do cool stuff
}
Run Code Online (Sandbox Code Playgroud)
希望有所帮助
| 归档时间: |
|
| 查看次数: |
7648 次 |
| 最近记录: |