我有一个在MY_Controller中运行的acl。如果权限被拒绝,那么此刻,我只是做redirect('denied')
- 这是一个非常基本的控制器,它会加载一个非常基本的视图,说“权限被拒绝”。
但是,我想要做的仍然是加载最初请求的uri,但加载“拒绝”视图而不是默认视图。
我可以在MY_Controller中执行此操作,并且被拒绝的视图加载正常。但是,这并不会阻止原始控制器/方法执行,因此我会加载两个视图。我还尝试在加载拒绝视图后在MY_Controller中添加exit;
语句,但这不可行,因为输出不会在CI中触发。
是否可以通过pre_constructor_controller挂钩执行此操作?我无法找到阻止控制器执行的方法......
答案 0 :(得分:9)
您必须让控制器执行才能让所请求的URI加载。
在MY_Controller
中检查ACL后,如果不允许,您可以在那里加载denied
视图,但在退出之前还需要做一件事。
$this->load->view('denied');
$this->output->_display();
exit();