0

如果用户未登录,我想覆盖现有的控制器并调用 auth/login ,而不是保持浏览器 URI 完好无损。(每个用户都必须登录才能使用该网站)

我已经尝试了一个预控制器挂钩,但它为时过早。此时尚未实例化 auth 库。由于目标控制器已被实例化,因此后控制器挂钩为时已晚。

编辑库的构造函数似乎也毫无意义,因为它已经被创建了..所以我有点卡住了..

请问有什么想法吗?:)..

谢谢

4

3 回答 3

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 {
于 2011-08-26T14:00:53.827 回答
0

您是否考虑过将 URI 保存到 flashdata,将访问者重定向到另一个控制器(登录页面),然后将引用者放入隐藏的表单字段?我正在使用 Codeigniter 对我的一个网站做同样的事情,它工作正常。唯一的区别是在这个过程中 URI 不是完整的。

于 2011-08-16T15:50:09.573 回答
0

也许这个问题的答案对你来说是一样的?CodeIgniter 仅允许在登录时访问某些控制器

(如果是这样,不要忘记将“function className()”替换为“function __construct()”和“parent::Controller();”替换为“parent::__construct();”)

于 2011-08-16T17:46:19.247 回答