2

我在同一台服务器上运行了 2 个 codeigniter 安装。

第一个应用程序是:localhost/aa/index.php

第二个应用程序是:localhost/aa/invoice/index.php

第二个应用程序位于第一个应用程序文件夹中。在实时环境中,它们将位于同一个域中。我试图让单点登录工作——所以,如果我在 aa 应用程序中设置了用户数据,我也应该能够在发票文件夹中验证它。

有没有办法分享会话。

由于文件夹将始终位于同一个域中,因此我也愿意使用 ci 库(仅 php)之外的会话。

编辑: 当他们没有任何数据时,他们会显示相同的会话 ID。当我在一个应用程序上添加一些变量时,另一个就会不同步。

我也有会话存储在数据库中(两个应用程序共享同一个数据库。)

请建议。

谢谢!:)

4

6 回答 6

7

Codeigniter 出于某种原因推出了自己的会话实现,而不是原生 PHP 会话。

http://codeigniter.com/user_guide/libraries/sessions.html

您可以选择使用:

  1. cookie 存储(不理想,存储空间小,cookie 中的敏感数据?)。
  2. 数据库会话(使用会话 id cookie 持久化)。
  3. 覆盖并滚动您自己的(使用本机 php 会话!)

显然,您需要确保正确配置会话标识符,以便两个应用程序可以从相同的会话数据中读取。如果使用数据库实现,您需要确保两个应用程序都可以访问同一个数据库。

为了增加复杂性,如果您选择加密会话,加密类使用的盐在两个应用程序中也需要相同,因此任何一个都能够解密共享会话数据。

于 2012-07-16T11:16:25.600 回答
2
$config['encryption_key'] = 'epitome';

两个应用程序文件夹的encryption_key配置名称将相同。

更改代码点火器的路径encryption_keyapplication/config/config.php第 228 行。

于 2014-07-24T12:20:34.287 回答
1
$config['sess_cookie_name'] = 'myvalue';

在 config.php 文件中,您可以在两个 CI 应用程序上设置相同的值,使用“文件”会话驱动程序

CI_Session Object

([用户数据] => 数组([__ci_last_regenerate] => 1490351129 [级别] => 1 [用户] => 103 [全名] => 鲁本火山口)

[_driver:protected] => files
[_config:protected] => Array
    (
        [cookie_lifetime] => 600
        [cookie_name] => MyHiddenValue
        [cookie_path] => /
        [cookie_domain] => 
        [cookie_secure] => 
        [expiration] => 600
        [match_ip] => 
        [save_path] => /tmp
    )

)

于 2017-03-24T10:42:37.710 回答
0

如果可以的话....我已经注意到那些不实用且违反常规的设计问题将为长期和根深蒂固的问题提供基础....您应该问问自己,这样做真的有必要/可取当我们知道它们是 2 个不同版本的框架的 2 个不同版本之间共享会话数据,因为它们做事不同......我只能说,无论你做什么......这个设计缺陷会使你的架构变得脆弱和迟早你将不得不倾倒它。

请让我知道如果以后你发现否则..

于 2012-07-17T05:08:01.787 回答
0

如果您使用相同的加密密钥在同一服务器上安装代码,默认情况下,两个安装都将共享会话。实际上,当我为另一个客户端但在同一服务器上复制 codeigniter 安装时,我发现了。我担心这是一个错误。

于 2013-12-03T18:43:34.037 回答
-2

如果您将代码移动到同一台服务器,则默认情况下两个会话都将开始共享。

于 2012-07-16T10:57:09.603 回答