2

我正在使用 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);
            }

        }
4

2 回答 2

2

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

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

您能否提供有关新代码在哪里的更多详细信息。它在同一个 CodeIgniter 安装中吗?等等

于 2010-12-03T22:06:27.733 回答
0

我在另一个应用程序中使用的一个图像上传功能中搞乱了我的会话。我已经删除了这些会话行,现在它可以正常工作了。会话代码是 PHP 原生 $_SESSION 代码,以防有人想知道。

谢谢。

于 2010-12-09T00:39:41.573 回答