首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Codeigniter Hooks高级

Codeigniter Hooks高级
EN

Stack Overflow用户
提问于 2012-07-10 15:16:55
回答 3查看 4.7K关注 0票数 2

你好,我正在使用post_controller钩子来验证用户是否登录,但当验证失败时,我将用户重定向到登录控制器...现在的问题是,当它重定向到缺省值时,控制器post_controller钩子会再次被调用,这样无限循环就会重复地开始重定向。我想为除登录控制器外的每个控制器调用post_controller钩子...还有一种方法,我不需要一次又一次地加载会话库,因为如果用户登录了,那么它就会在post控制器中加载会话库,以及通过配置文件中的自动加载...以下是我的代码

代码语言:javascript
运行
复制
    //Hooks
    $hook['post_controller'] = array(
                                'class'    => 'is_login',
                                'function' => 'index',
                                'filename' => 'is_login.php',
                                'filepath' => 'hooks'
                                ); 

//Is_Login Hook
class is_login {
function __construct(){
$this->CI =& get_instance();

    if(!isset($this->CI->session))              //Check if session lib is loaded or not
        $this->CI->load->library('session');    //If not loaded, then load it here
}

public function index()
{
    $login_id = $this->CI->session->userdata('login_id');
    $login_flag = $this->CI->session->userdata('logged_in');

       if ($login_flag != TRUE || $login_id == "")
        {
            redirect(site_url().'/welcome_login', 'refresh');

        }           
}
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-10 15:27:20

这似乎不是一个使用Codeigniter钩子的好地方。最好是在应用程序中扩展controller类,并在构造函数中检查用户是否已登录并重定向到登录控制器。但是不需要从您的控制器扩展登录控制器,而是从CI_Controller扩展它。

票数 4
EN

Stack Overflow用户

发布于 2012-07-10 16:53:40

我通过钩子验证登录没有问题。我只是在注销和exit应用程序时生成登录视图,这样唯一显示的就是登录,而控制器(和rest)会被忽略。

不需要重定向,真的。

票数 1
EN

Stack Overflow用户

发布于 2013-12-23 10:01:05

代码语言:javascript
运行
复制
if ($this->CI->uri->segment(1) != 'auth') {

    //Authenticate
    if (empty($user->user_id))redirect('auth');

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11408379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档