如果用户未登录,我想覆盖现有的控制器并调用 auth/login ,而不是保持浏览器 URI 完好无损。(每个用户都必须登录才能使用该网站)
我已经尝试了一个预控制器挂钩,但它为时过早。此时尚未实例化 auth 库。由于目标控制器已被实例化,因此后控制器挂钩为时已晚。
编辑库的构造函数似乎也毫无意义,因为它已经被创建了..所以我有点卡住了..
请问有什么想法吗?:)..
谢谢
如果用户未登录,我想覆盖现有的控制器并调用 auth/login ,而不是保持浏览器 URI 完好无损。(每个用户都必须登录才能使用该网站)
我已经尝试了一个预控制器挂钩,但它为时过早。此时尚未实例化 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 不是完整的。
也许这个问题的答案对你来说是一样的?CodeIgniter 仅允许在登录时访问某些控制器
(如果是这样,不要忘记将“function className()”替换为“function __construct()”和“parent::Controller();”替换为“parent::__construct();”)