Session 在CakePHP1.3中,使用$this->;有什么好处吗;控制器->;超过$this的会话->;组件中的会话?

Session 在CakePHP1.3中,使用$this->;有什么好处吗;控制器->;超过$this的会话->;组件中的会话?,session,cakephp,persistence,components,Session,Cakephp,Persistence,Components,我使用的是Felix Geisendörfer的SimpleAuth/SimpleCal组件的一个修改版本,我已经将其组合成一个组件SimpleAuthable 我将他的startup()函数改为initialize(),以避免我的app_控制器中的beforeFilter函数混乱 该组件所做的一件事是检查活动用户是谁,如果找不到该用户,它会根据主user.id查找该用户,或者使用“guest”。无论哪种方式,组件都使用$this->Controller->Session->write()保存活

我使用的是Felix Geisendörfer的SimpleAuth/SimpleCal组件的一个修改版本,我已经将其组合成一个组件SimpleAuthable

我将他的startup()函数改为initialize(),以避免我的app_控制器中的beforeFilter函数混乱

该组件所做的一件事是检查活动用户是谁,如果找不到该用户,它会根据主user.id查找该用户,或者使用“guest”。无论哪种方式,组件都使用$this->Controller->Session->write()保存活动用户或来宾信息

我还使用了Felix的Authsome插件,而不是默认的CakePHP Auth组件

当我登录时,活动用户显然是来宾

在我提交表单之后,活动用户仍然是来宾,因为组件的initialize()函数在其他所有操作之前启动。然后,Authsome插件开始运行,将我的用户验证为“root”,并调用$this->simpleuthable->setActiveUser($id,true);强制SimpleAuthable通过$this->Controller->Session更新其存储的活动用户信息;然后我被重定向,我的简单会话信息和DebugKit的会话选项卡反映出我确实是根用户

然而,当我尝试导航到一个“admin”页面时,比如说/admin/users/index,你会发现SimpleAuthable认为我仍然是一个“来宾”用户,因为当它对持有我的用户id的键执行$this->Controller->Session->read()调用时,它得到的是一个空响应,也就是说,存储在前一个页面上的数据没有持久化

也许Authsome和simpleuthable之间发生了一些奇怪的事情,但事情看起来非常简单,在我看来,$this->Controller->Session应该保存并持久化写入其中的数据

所以,我正在考虑重构对$this->Controller->Session的所有调用,并将它们替换为$this->Session,但首先我想把它扔给社区,看看是否有人看到过类似的东西,如果有,他们是如何解决的

真诚地,
克里斯托弗。

我发现了问题。。。我也在使用Joshua McNeese的许可插件,我需要为$this->Controller->{$this->userModel}->findById($id)禁用它;在我的SimpleAuthable组件中,当我尝试查找当前活动用户时

self注意:如果我有一些适当的单元测试,我会更快地发现这一点:(