我搞乱uploadify和cakephp(2.x)atm,但我不能让它工作。它在一小时前运作,现在它被神奇地摧毁。cakephp 2.x/uploadify:更改会话ID强制注销
我的cakephp应用程序具有一个简单的认证后端。用户可以使用uploadify上传图像,当uploadify将图像发送给我的控制器时,我只需将sessionid作为参数。
不幸的是我收到一个HTTP-ERROR(HTTP/1.1 304 Not Modified)。从认证中排除控制器的方法($ this-> allow(...))确实有帮助。因此,我认为在认证/会话方面失败了。
我采取的下一步是我检查SID是否传输和它。
这就是为什么我认为我将问题范围缩小到会话ID设置的位置。这种情况发生在控制器的beforeFilter中:
if(isset($ this-> params ['session_id'])){$ this-> Session-> id($ this-> params ['session_id' ]); }
当我添加一段代码有事,我无法解释/理解:
我试着通过uploadify在backened上传的图像,并将其与HTTP错误返回。点击F5/Refresh会导致登录表单重定向,尽管我实际登录了!我也得到一个新的SID。
我99%确定session_id参数被传送到控制器,$ this-> Session-> id()应该设置正确的SID。
那么为什么我会注销?
当我手动调用URL到我的控制器(http:// localhost/myapp/backend/upload/12345 * 12345是SID!)时,我不会注销。只有在uploadify做到这一点。
我也尝试设置蛋糕安全级别低,但它不会帮助。当我将sessionData参数提交给uploadify js脚本时,也会发生这种情况。
当我使用我的控制器的方法,该行的代码:
$this->Session->id(1234);
echo $this->Session->id();
方法回波1234,但在我的后台的页面视图仍然指出原来的会话值。这到底是怎么回事?
有没有人可能知道正在发生的事情,或者至少知道为什么会话/身份验证的行为方式如此?
在此先感谢您的帮助!
问候
我固定它。
我的控制器的beforeFilter()函数看上去像是:
parent::beforeFilter();
if (isset($this->params['session_id'])) { $this->Session->id($this->params['session_id']); }
但会话ID必须设置之前调用父:: beforeFilter()函数。
if (isset($this->params['session_id'])) { $this->Session->id($this->params['session_id']); }
parent::beforeFilter();
该死-.-浪费了这么多时间..