Codeigniter tank auth - 用户在没有任何已知原因的情况下被注销

时间:2010-12-03 21:32:58

标签: php codeigniter tankauth

我正在使用codeigniter tank auth库与用户合作,它一直很好用。每当我尝试访问任何控制器时,该函数都会检查用户是否以这样的方式登录:

if($this->tank_auth->is_logged_in()) {

如果已记录,我会加载模型,但如果没有,我会重定向到登录页面。它已经这样工作了一个月,但现在我正在扩展我的应用程序并构建了一些使用相同技术的其他控制器,但文件位于其他文件夹中。以前的工作应用程序仍然很好,但在这个应用程序中从新文件夹(它基本上是该应用程序的新模块,使用相同的登录页面,但根据用户选择的模块重定向不同)我可以正确登录,我可以做一个任何对控制器的请求没有问题,但在某些时候,它告诉我用户没有登录。这不是会话过期或者什么,就像我现在正在发出一个请求,延长我的会话,下一个是3秒间隔让用户退出...我的新控制器没有什么不同,但是,过了一段时间,有时需要5分钟,有时15分钟,它会退出...我不知道为什么,是什么搞乱了我的会话?我没有使用会话......

有谁知道这是关于什么的?还是有什么建议吗?如果要求,我可以提供进一步的细节。

非常感谢。

编辑:新模块包含相同Codeigniter安装中的更多控制器,它使用相同的CI配置,相同的tank auth库,并将这些功能复制到主请求控制器,如下所示:

class Requests extends Controller
{
    function __construct()

    {
        parent::__construct();

        $this->load->helper(array('form', 'url'));
        $this->load->helper('date');
        $this->load->library('form_validation');
        $this->load->library('tank_auth');
    }

..............
more functions
..............

    function getServices() { /// One of the functions that the new module uses
            if (!$this->tank_auth->is_logged_in()) {
                return;
            } else {
                $this->load->model('requests/getServices');
                $data['tid'] = $_POST['tid'];
                $this->getServices->showData($data);
            }

        }

2 个答案:

答案 0 :(得分:2)

我怀疑cookie中的延迟消失与$ config ['time_to_update']有关(默认为300秒)。

如果没有更改会话变量,则Cookie每5分钟更新一次(重新设置)。因此,从应用程序的新部分的角度来看,cookie可能会变得无效,但是在300秒过去之前,Session类才会实现它,此时它将被清除并且用户将被注销

您能否提供有关新代码所在位置的更多详细信息。它是否在相同的CodeIgniter安装中?等

答案 1 :(得分:0)

我在另一个应用程序中使用的一个图像上传功能中弄乱了我的会话。我已经删除了那些会话行,现在它可以正常运行。会话代码是PHP本机$ _SESSION代码,万一有人想知道。

感谢。