通过auth.user.id过滤数据源

时间:2013-10-18 17:03:01

标签: cakephp cakephp-2.0

我是cakephp的新手,我不会放弃它。

我正在构建一个用户登录并注册一些数据的系统。我希望用户只看到自己的数据。我该怎么做呢?我在考虑在模型中做出一种限制,还是我必须在每个函数中编写代码(连接到视图)?

我有一个运行良好的系统用户登录等,但我无法将数据访问权限分离给用户。

我无法弄清楚这一点,我可能会认为这有点因为我可能不知道该问什么。希望有些人能帮助我。

2 个答案:

答案 0 :(得分:0)

您已通过$this->Auth->user('id');登录用户ID。然后,您必须在user_id = $userId的查找呼叫中设置条件。

$userId = $this->Auth->user('id');

$this->SomeRelatedModel->find('all', array(
    'conditions' => array(
        'SomeRelatedModel.user_id' => $userId,
    ),
));

您还可以将$userId变量传递给模型并在那里进行查找调用(方法或自定义查找调用)。

如果很多模型/查找调用需要按用户ID过滤,您可能需要创建一个行为并使用beforeFind回调将条件添加到查询中。

答案 1 :(得分:0)

当用户登录时,Auth会将Id存储在会话中。你可以使用它来访问它 $this->Session->read('Auth.User.id')$this->Auth->user('id')AuthComponent::user('id')

$this->User->find('all',array(
                            'conditions'=>array('id'=>$this->Session->read('Auth.User.id')),
                            'fields'=>'...............'));