我一直在努力工作几个小时才能完成这项工作。我已经在论坛上搜索过,不能为我的生活让这个工作。对此事的任何启发都将非常感激。
我正在跑步:
香草版2.0.17.8
ProxyConnect版本1.8.4
Cakephp版本1.3.3
Croogo版本1.3.2(cakephp CMS)
我已在子文件夹app / webroot / vanilla
中安装了Vanilla论坛安装顺利进行,我将proxyconnect插件上传到vanilla plugins文件夹。 我激活它,并加载以下网址(我已经取出http://因为我只允许发布2个链接,因为我是这里的新手)
主站点URL您将使用ProxyConnect的网站的URL
本地主机:8888 / CMRS
验证URL与Vanilla分享身份信息的幕后URL 本地主机:8888 / CMRS /用户/认证
注册网址用户可以在网站上注册新帐户的网址
本地主机:8888 / CMRS /注册
登录网址用户在您网站上登录的网址
本地主机:8888 / CMRS /用户/登录香草= 1
退出网址用户退出网站的网址
本地主机:8888 / CMRS /用户/退出香草= 1
我在users_controller中创建了一个名为authenticate()
的动作public function authenticate() {
$this->layout = 'ajax';
$this->header('Content-Type: text/plain');
if($this->Auth->user()) {
$data = $this->Auth->user();
$this->set('data', $data);
}
}
我创建了一个视图authenticate.ctp,如果您直接访问它并且您已登录,则会正确输出数据
<?php
if(isset($data)) {
echo 'UniqueID='.$data['User']['id']."\n";
echo 'Name='.$data['User']['username']."\n";
echo 'Email='.$data['User']['email']."\n";
echo 'TransientKey='."\n";
echo 'DateOfBirth='."\n";
echo 'Gender=';
}
?>
输出
UniqueID=1
Name=admin
Email=you@your-site.com
TransientKey=
DateOfBirth=
Gender=
在vanilla config.php中我设置了
$Configuration['Garden']['Cookie']['Domain'] = '.localhost';
在Cakephp bootstrap.php中我设置了
ini_set('session.cookie_domain', '.localhost');
所以,毕竟当我点击来自香草的登录时,我被重定向到蛋糕应用程序登录,当我登录时,我没有登录香草论坛。
当我从Vanilla退出时,我被重定向到蛋糕应用程序并从那里注销但不是从Vanilla注销。
任何建议都将不胜感激。
答案 0 :(得分:1)
摆脱
TransientKey=
DateOfBirth=
Gender=
输出中的因为空字符串
而导致ini字符串格式失败答案 1 :(得分:0)
首先,在使用CakePHP的AuthComponent
时,我曾经被蜇过一次,因为Cookie没有按照我在localhost
上的预期工作。我没有花太多时间调查代码在生产环境中工作(在真实的域名上)。
我建议您使用逼真的域名在hosts
文件中添加一个条目。假设您的生产网址为http://www.example.com/
或http://forum.example.com/
,您可以通过更新hosts
文件将虚拟开发子域映射到同一域名:
127.0.0.1 localhost dev.example.com
然后,您将使用http://dev.example.com:8888/而非http://localhost:8888/访问您的开发环境。之后,您需要更新Proxyconnect设置中的所有URL以及Vanilla / CakePHP配置文件中的cookie域以匹配此新域。
// http://dev.example.com:8888/cmrs
// http://dev.example.com:8888/cmrs/users/authenticate
// http://dev.example.com:8888/cmrs/register
// http://dev.example.com:8888/cmrs/users/login?vanilla=1
// http://dev.example.com:8888/cmrs/users/logout?vanilla=1
$Configuration['Garden']['Cookie']['Domain'] = '.example.com';
ini_set('session.cookie_domain', '.example.com');
其次,您应该使用开发工具来检查正在创建的任何cookie,确保它们实际上是使用正确的域和路径设置创建的(我猜CakePHP应该创建Proxyconnect可以看到的cookie)。轻松实现这一目标的一个流行组合是使用Firefox + Firebug + Firecookie,但许多新浏览器都内置了这些工具(例如,Chrome的“资源”选项卡包含Developer Tools)。 / p>
如果CakePHP(或Vanilla)安装在子目录中,您可能需要检查在子目录中是否“沙箱化”的未创建的cookie。我相信CakePHP默认会这样做,除非你ini_set('session.cookie_path', '/');
。
此外,当CakePHP的Security.level
设置值为high
时,它将在每个请求上重新生成(随机)会话ID。我会将此设置为medium
,至少在测试时。