如果用户没有登录我想覆盖现有的控制器,并调用auth/login之一,而不是保持浏览器URI的机智。 (每个用户必须登录才能使用该站点)代码点火器2 - 控制器/方法覆盖
我已经尝试过预控制器挂钩,但它太早。此时auth库尚未实例化。 由于目标控制器已被实例化,后控制器挂钩已经太晚了。
编辑库的构造似乎也没有意义,因为它已经被创建..所以我有点卡住..
任何想法吗? :) ..
感谢
如果用户没有登录我想覆盖现有的控制器,并调用auth/login之一,而不是保持浏览器URI的机智。 (每个用户必须登录才能使用该站点)代码点火器2 - 控制器/方法覆盖
我已经尝试过预控制器挂钩,但它太早。此时auth库尚未实例化。 由于目标控制器已被实例化,后控制器挂钩已经太晚了。
编辑库的构造似乎也没有意义,因为它已经被创建..所以我有点卡住..
任何想法吗? :) ..
感谢
我会覆盖默认控制器并在每个控制器中扩展。下一个代码./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 {
你有没有考虑刚保存的URI来flashdata,访问者重定向到另一个控制器(登录页面),然后只是把引荐到一个隐藏的表单字段?我在使用Codeigniter的一个网站上做同样的事情,它工作正常。唯一的区别是在这个过程中URI并不完整。
我可以访问认为它认为我不知道“如何”确定是..如果黑客阻止任何重定向发生不会控制器只是继续和完成..重定向是否停止代码点火器执行过程? – Lee
也许这个问题的答案对你来说是一样的吗? CodeIgniter only allow access to certain controllers when logged in
(如果是这样,不要忘记用“parent :: __ construct();”)替换“function __construct()”和“parent :: Controller();”中的“function className()
很好的答案。这将显示你如何做到这一点http://philsturgeon.co.uk/news/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY –
感谢您的答复。我将这与一个名为_remap的方法结合起来作为一种代理。再次感谢。 – Lee