用于检查用户的codeigniter挂钩已登录

时间:2016-02-06 10:26:36

标签: php codeigniter

我目前正在尝试添加到我的验证钩子(检查用户/公司是否处于活动状态)并且我设法通过一些修改来使这个工作正常...

我现在正试图做我在每个班级做的事情>函数(或__construct)并进行基本检查是用户使用我的会话数据'loginuser'登录,并将其设置为布尔...

我正在尝试使用此功能但请继续获取TOO_MANY_REDIRECTS。它与我在__construct或每个公共函数中使用的代码相同,并且它在那里工作完美(除非为非对象更改)...

    function logged_in() {

    $CI =& get_instance();

    if(!$CI->session->userdata('loginuser')) {
        redirect('account/login');
    }
}

我不知道为什么它不会在名为'post_controller_constructor'的钩子中工作。 我可能忽略了一些非常简单的事情,但我已经在圈子里走了好几个小时,谷歌/搜索者没有任何用处。这也是一件非常基本的事情......

答案:对于在家玩耍的人来说:

    function logged_in() {

    $CI =& get_instance();

    if(!$CI->session->userdata('loginuser')) {
        if (uri_string() != 'account/login' && uri_string() != 'login' && uri_string() != 'account/register'){

            $CI->session->set_flashdata('flashError', 'Please login to continue');
            redirect('account/login');
        }
    }

}

1 个答案:

答案 0 :(得分:1)

你的代码正在做你想要的,但有一点疏忽。

在进行任何类型的重定向之前,您需要检查当前路由是否为登录页面。

我想,在你之前检查过控制器构造函数之前,你没有把它放在帐户控制器中。

If (user is not logged in) {
    If (Current route is not a login page) {
        Redirect user to login page
    }
}