更改 PhpMyAdmin Cookie 路径
Posted
技术标签:
【中文标题】更改 PhpMyAdmin Cookie 路径【英文标题】:Change PhpMyAdmin Cookie Path 【发布时间】:2012-11-26 06:21:04 【问题描述】:phpMyAdmin 将 cookie 路径设置为安装 PMA 的路径。
所以如果它安装在 /pma/ 中,它会将 cookie 路径设置为 /pma/。但是,我有注销代码,需要访问会话才能将用户与其他系统会话一起从 PMA 中注销,但它位于 / 中。
这当然行不通,因为浏览器不允许在 cookie 路径之外访问 cookie。
在 php.ini 中设置默认 cookie 路径不起作用,因为 PMA 在设置将覆盖 php.ini 设置的 cookie 时指定了自己的路径。
有没有办法通过设置配置选项或可能扩展 PMA 类将 PMA 设置的默认 cookie 路径更改为 /?我也读过一个叫做猴子补丁的东西,使用runkit,它可以做到吗?如果有怎么办?
编辑 PMA 核心文件不是一种选择,因为我希望在升级之间进行更改。如果可以将其编码到 config.inc.php 中,它将在升级之间保持不变。
我通过 config.inc.php 尝试过的一些事情:
用相同的名称和 sessionid 设置我自己的 cookie 不起作用,因为 cookie 被 PHP 处理中进一步设置的一个 PMA 覆盖。 更改 $_SERVER['PHP_SELF'] 的值(用于确定路径的值之一)不起作用,不知道为什么。 我尝试扩展 PMA_Config 类,尤其是 getCookiePath() 方法,但没有成功,因为我不知道如何实例化它,因此它覆盖了 PMA_Config 的方法。【问题讨论】:
我认为runkit
有点过头了。如果它不提供您正在寻找的配置选项,您为什么不直接破解字符串的来源,然后只需修补应用程序以满足您的需求?将其添加为配置选项,然后使用您的补丁提交功能请求。
另外,您似乎正在寻找 PMA 支持的 SingleSignOn。在文档中查看现有选项是什么:wiki.phpmyadmin.net/pma/Auth_types
哇,没想到人们会这么快做出回应。我实际上已经在设置 SSO =o)
@hakre 让 SSO 工作,我花了一周的时间试图弄清楚如何解决这个问题,而我所需要的只是使用不同的 authtype。既然您确实提供了正确的解决方案,您是否想将其作为答案并说明如何设置?
我有一个更好的建议:回答你自己的问题。这是完全正确的,我敢打赌,你可以写出比我能写的更好的答案。我只是给出一些指示,仅此而已;)。是的,这个网站完全接受您回答自己的问题。很高兴看到你现在解决了;)
【参考方案1】:
我最终将 Signon authtype 用于 PMA
然后我的 PMA 配置变为:
$cfg['Servers'][$i]['auth_type'] = 'signon';
$cfg['Servers'][$i]['SignonSession'] = 'YOUR_SESSION_ID'; // You can use ini_get('session_name') if you prefer
$cfg['Servers'][$i]['SignonURL'] = 'FULL_URL'; // URL it will redirect unauthenticated users
$cfg['Servers'][$i]['LogoutURL'] = 'FULL_URL'; // URL where user will be redirected after logout
在我的 SSO 脚本中,我在登录系统的其余部分时添加了这些行,因此它也会同时登录到 PMA。
$_SESSION['PMA_single_signon_user'] = 'MY_PMA_USERNAME';
$_SESSION['PMA_single_signon_password'] = 'MY_PMA_PASSWORD';
现在我不需要访问 PMA cookie,因为它使用主系统设置的 SID cookie。要注销主系统和 PMA,我会定期注销 cookie:
$_SESSION = array();
setcookie(session_name(), '', time() - 3600);
session_destroy();
【讨论】:
以上是关于更改 PhpMyAdmin Cookie 路径的主要内容,如果未能解决你的问题,请参考以下文章