[英]Share session storage between codeigniter projects
在Codeigniter上开发了两个不同的项目。 我想在这些项目之间共享会话存储。 $config['sess_cookie_name'] = 'ci_session';
两者的配置文件相同。 但是,当我刷新其中一个时,所有数据都会自动从另一个项目中删除。 我不能解决这个问题。 #救命
将会话存储在中央数据库中; 对不同的项目使用相同的会话表。
请参阅https://codeigniter.com/user_guide/libraries/sessions.html#database-driver
附录:
Codeigniter(CI)采用多种方式来存储会话。 平面文件,数据库,Redis等。默认为平面文件。 即 将会话数据存储在文件系统中。
也可以将会话存储在数据库表中。 此方法有助于多服务器和多项目的安装。
application / config / config.php确实有一个名为“会话变量”的部分。
$ config ['sess_driver'] ='数据库'; <-使用数据库
$ config ['sess_save_path'] ='ci_sessions'; <-使用此表
在不同项目之间共享此表用于会话存储将解决此问题。
此处找到的解决方案: 跨域Cookie是创建单个登录门户,然后将用户从那里重定向到相关区域。 无法跨域共享Cookie(会话的基础),因此您需要找到替代解决方案。 集中登录和验证过程应该可以解决该问题。
有两种方法可以解决此问题。
首先是将会话实际存储在数据库中。 您将cookie名称保留在$_SESSION
,并将其提交给数据库以检索会话数据。 在机器之间移动时,可以在您选择的超全局变量中传输cookie名称: $_POST
或$_GET
,但很可能是$_GET
。 这种方法的问题在于,您需要从数据库中进行大量读写操作:
替代方法是使用相同的会话密钥,并像以前一样保留本地$_SESSION
数据,但根据需要在过程上生成会话。 现在的区别是,每台计算机上的会话将不会真正同步,而是使用相同的逻辑生成。
当您的计算机创建和更新自己的本地会话时,大多数用户不会注意到单个本地会话的处理代价,但是,他们可能会注意到附加到其页面请求的例行数据库调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.