如果用户未登录,我想覆盖现有的Controller并调用auth / login,而不是保持浏览器URI。 (每个用户都必须登录才能使用该网站)
我试过一个预控制器钩子,但是它太早了。此时尚未实例化auth库。 由于目标控制器已被实例化,因此后控制器挂钩太晚了。
编辑库的构造函数似乎也没有意义,因为它已经被创建了......所以我有点卡住..
有什么想法吗? :)..
由于
答案 0 :(得分:4)
我会覆盖默认控制器并在每个控制器中扩展。使用下一个代码创建一个新文件:./ app / core / MY_Controller.php:
class Secure_Controller extends CI_Controller {
function __construct() {
parent::__construct();
/* replace this code with yours */
if( !$this->session->userdata('logged_in') ) {
redirect(base_url() . 'login', 'refresh'); // your login url
}
}
}
然后,在每个控制器中使用此代码,您应该可以由登录用户访问
class Main extends Secure_Controller {
答案 1 :(得分:0)
您是否考虑过将URI保存到flashdata,将访问者重定向到另一个控制器(登录页面),然后将引用者放入隐藏的表单字段?我正在使用Codeigniter对我的一个网站做同样的事情,它工作正常。唯一的区别是在此过程中URI不完整。
答案 2 :(得分:0)
也许这个问题的答案对你来说是一样的吗? CodeIgniter only allow access to certain controllers when logged in
(如果是这样,不要忘记用“function __construct()”和“parent :: Controller();”替换“parent className()”by“parent :: __ construct();”)