我对 CakePHP 和整个 MVC 框架非常陌生。我的问题是在我的网站中加入会话的最佳位置是哪里。
我想在用户访问该站点后立即启动一个会话,并在每次调用控制器之前检查它是否有效以及用户是否已登录(通过会话属性)。
我应该在 AppController 中放置逻辑来检查有效会话吗?如果是这样,我该怎么做,因为没有实例化 AppController,所以我不能使用 $this->html->session()。
非常感谢
您走在正确的轨道上,但请再看一下有关 Sessions 的文档。
你想使用$this->Session->read/write/check/etc
如果您包含了 Session 组件,Cakephp 将始终启动一个会话,并且在大多数情况下,这正是您想要的。在 AppController 中你只需要告诉 CakePHP 使用 Session 组件。
像这样的东西...
public $components = array(
'Session',
'RequestHandler',
'Cookie'
);
然后也包括助手......
public $helpers = array('Html', 'Form', 'Session');
现在你准备好摇滚了。
在会话中存储一个值:
$this->Session->write("myvalue");
从会话中读取值:
$this->Session->read("myvalue");
您还可以使用以下方法检查是否设置了值:
$this->Session->check("myvalue");
您还可以在控制器中使用 beforeFilters 来阻止对控制器的访问:
public function beforeFilter(){
parent::beforeFilter();
if(!$this->Session->check("id")){
$this->redirect("/users/login");
}
}
或者,只需将上述内容包装在私有方法中,然后在您要控制访问的所有操作的第一行调用该方法。