我非常新的CakePHP和整个MVC框架。我的问题是在我的网站中整合会话的最佳场所在哪里。CakePHP的会话设计
我想作为一个用户访问该网站,以尽快启动一个会话,并检查它是否有效,如果用户每次调用控制器之前登录(通过会话属性)。
我应该把检查在AppController的有效会话的逻辑是什么?如果是的话我该怎么做,因为没有实例化AppController,所以我不能使用$ this-> html-> session()。
非常感谢
我非常新的CakePHP和整个MVC框架。我的问题是在我的网站中整合会话的最佳场所在哪里。CakePHP的会话设计
我想作为一个用户访问该网站,以尽快启动一个会话,并检查它是否有效,如果用户每次调用控制器之前登录(通过会话属性)。
我应该把检查在AppController的有效会话的逻辑是什么?如果是的话我该怎么做,因为没有实例化AppController,所以我不能使用$ this-> html-> session()。
非常感谢
你是在正确的轨道上,但再看看在documentation on Sessions.
你想使用$this->Session->read/write/check/etc
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("https://stackoverflow.com/users/login");
}
}
或者只是将上述内容包装在私有方法中,并在要控制访问的所有操作的第一行中调用该方法。
会议是存储的形式,这应该给你相当不错的主意何处以及如何被使用。 –
的[AuthComponent(http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html)将最有可能处理在默认情况下你的所有要求。 – user221931