2

我对 CakePHP 和整个 MVC 框架非常陌生。我的问题是在我的网站中加入会话的最佳位置是哪里。

我想在用户访问该站点后立即启动一个会话,并在每次调用控制器之前检查它是否有效以及用户是否已登录(通过会话属性)。

我应该在 AppController 中放置逻辑来检查有效会话吗?如果是这样,我该怎么做,因为没有实例化 AppController,所以我不能使用 $this->html->session()。

非常感谢

4

2 回答 2

1

您走在正确的轨道上,但请再看一下有关 Sessions 的文档。

你想使用$this->Session->read/write/check/etc

如果您包含了 Session 组件,Cakephp 将始终启动一个会话,并且在大多数情况下,这正是您想要的。在 AppController 中你只需要告诉 CakePHP 使用 Session 组件。

像这样的东西...

 public $components = array(
        'Session',
        'RequestHandler',
        'Cookie'
    );

然后也包括助手......

  public $helpers = array('Html', 'Form', 'Session');

现在你准备好摇滚了。

于 2013-08-21T16:22:00.810 回答
0

在会话中存储一个值:

  $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");
}
}

或者,只需将上述内容包装在私有方法中,然后在您要控制访问的所有操作的第一行调用该方法。

于 2013-08-21T18:09:34.703 回答