Php 代码点火器2-控制器/方法超控
如果用户未登录,我希望覆盖现有控制器并调用auth/login,而不是保持浏览器URI不变。(每个用户都必须登录才能使用该网站) 我试过一个预控器钩子,但太早了。此时尚未实例化身份验证库。 由于目标控制器已实例化,后控制器挂钩太迟 编辑库的构造函数似乎也毫无意义,因为它已经被创建了。。所以我有点困了 有什么想法吗?:)Php 代码点火器2-控制器/方法超控,php,overriding,uri,codeigniter-2,Php,Overriding,Uri,Codeigniter 2,如果用户未登录,我希望覆盖现有控制器并调用auth/login,而不是保持浏览器URI不变。(每个用户都必须登录才能使用该网站) 我试过一个预控器钩子,但太早了。此时尚未实例化身份验证库。 由于目标控制器已实例化,后控制器挂钩太迟 编辑库的构造函数似乎也毫无意义,因为它已经被创建了。。所以我有点困了 有什么想法吗?:) 谢谢您是否考虑过将URI保存到flashdata,将访问者重定向到另一个控制器(登录页面),然后将引用者放入隐藏的表单字段?我使用Codeigniter在我的一个网站上做了同样的
谢谢您是否考虑过将URI保存到flashdata,将访问者重定向到另一个控制器(登录页面),然后将引用者放入隐藏的表单字段?我使用Codeigniter在我的一个网站上做了同样的事情,效果很好。唯一的区别是URI在此过程中并不完整。您是否考虑过只将URI保存到flashdata,将访问者重定向到另一个控制器(登录页面),然后将引用者放入隐藏的表单字段?我使用Codeigniter在我的一个网站上做了同样的事情,效果很好。唯一的区别是URI在这个过程中并不完整。也许这个问题的答案对您来说是一样的
(如果是这样,请不要忘记将“function className()”替换为“function _-construct()”,将“parent::Controller();”替换为“parent::_-construct()”)也许这个问题的答案对您来说是一样的
(如果是这样,请不要忘记将“function className()”替换为“function _-construct()”,将“parent::Controller();”替换为“parent::_-construct()”)我将覆盖默认控制器并在每个控制器中进行扩展。创建一个新文件:./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 {
我将覆盖默认控制器并在每个控制器中进行扩展。创建一个新文件:./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 {
我曾考虑过,但我不确定“如何”确定那是。。如果黑客阻止了任何重定向的发生,控制器不会继续并完成吗。。重定向是否会停止代码点火器的执行过程?我曾考虑过它,但我不确定它“如何”确定。。如果黑客阻止了任何重定向的发生,控制器不会继续并完成吗。。重定向是否会停止代码点火器的执行过程?回答得好。这将显示您是如何做的,谢谢您的回复。我将其与名为_remap的方法结合使用,作为一种代理。再次感谢。回答得好。这将显示您是如何做的,谢谢您的回复。我将其与名为_remap的方法结合使用,作为一种代理。再次感谢。