登录后如何在其他页面控制器中找出我当前的用户ID?

时间:2009-11-10 06:36:59

标签: cakephp

我计划在我的事件索引页面上设置权限,这只允许某些用户查看添加事件时设置的内容。用户单击进入我的事件后,事件控制器将首先检查用户ID并检查事件数据库,控制用户可以在其日历中查看哪个事件。用户创建事件并与其他用户共享时添加权限。除此之外,我如何找到当前用户ID与我的事件数据库进行比较,这是准确的1?

我有什么建议去做这个功能吗? 我需要知道代码和概念如何获取当前用户ID以与所有事件数据库进行比较,并允许当前用户查看特定事件。

非常感谢您提供的信息。

5 个答案:

答案 0 :(得分:20)

登录用户数据的推荐方法是通过AuthComponent本身:

// in any controller
$userId = $this->Auth->user('id');

请参阅Accessing the logged in user的身份验证部分中的CakePHP Book

答案 1 :(得分:6)

使用会话在页面之间为用户保存和读取数据。

在控制器中:

// store a user id in the session
$this->Session->write('User.id', $userId);

// read a user id from the session
$userId = $this->Session->read('User.id');

在视图中:

// read a user id from the session
$userId = $session->read('User.id');

如果你喜欢“User.id”之外的东西,你可以使用你想要的任何键。我只是使用它,因为如果您使用它,AuthComponent默认为。

答案 2 :(得分:2)

您正在寻找的是ACL(访问控制列表)。 Cake中有一个AclComponent,你应该研究一下。它与AuthComponent一起使用,它将保存用户ID。起初它有点复杂,但值得麻烦。

答案 3 :(得分:1)

此外,对于一种简单的方法,请查看AuthComponent::authorizemodelcontroller设置。这允许您在控制器或模型(您的选择)中定义isAuthorized()方法,该方法将存储确定访问权限的逻辑(如果允许访问则应返回true,如果拒绝则返回false。< / p>

答案 4 :(得分:0)

查看会话,查询,数据以及蛋糕中页面之间传递的所有其他内容使用这个惊人的小助手http://thechaw.com/debug_kit