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

Cakephp 如何在登录后在其他页面控制器中查找我的当前用户id?,cakephp,Cakephp,我计划在我的事件索引页面上设置权限,这只允许某些用户查看我添加事件时设置的权限。在用户点击“我的事件”后,事件控制器将首先检查用户id,并检查控制用户可以查看其日历中的事件的事件数据库。该权限是在用户创建事件并共享给其他用户时添加的。此外,我如何找到当前用户id以与我的事件数据库(精确的1)进行比较 有什么建议让我做这个功能吗? 我需要知道如何获取当前用户id以与所有事件数据库进行比较的代码和概念,并允许当前用户查看特定事件 非常感谢您提供的信息。使用会话在页面之间为用户保存和读取数据 控制器内

我计划在我的事件索引页面上设置权限,这只允许某些用户查看我添加事件时设置的权限。在用户点击“我的事件”后,事件控制器将首先检查用户id,并检查控制用户可以查看其日历中的事件的事件数据库。该权限是在用户创建事件并共享给其他用户时添加的。此外,我如何找到当前用户id以与我的事件数据库(精确的1)进行比较

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


非常感谢您提供的信息。

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

控制器内部:

// 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');
视图内:

// 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
会默认使用它。

您要查找的是ACL(访问控制列表)。有一个内置的蛋糕,你应该看看。它与将保存用户id的一起工作。一开始有点复杂,但值得麻烦。

另外,为了简单起见,请查看的
模型和
控制器设置。这允许您在控制器或模型(您的选择)中定义
isAuthorized()
方法,该方法将存储确定访问的逻辑(如果允许访问,应返回
true
;如果拒绝访问,应返回
false

获取登录用户数据的建议方法是通过AuthComponent本身:

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

请参见。

的“身份验证”部分,以查看cake中从一页到另一页传递的会话、查询、数据和其他所有内容。请使用这个神奇的小助手作为完整的示例,但“会话助手和会话组件之间的主要区别在于,助手不具备写入会话的能力。”感谢您指出这一差异,我更新了我的回复,以反映.acl组件仅在某些授权模块中被隐藏使用。AuthComponent是查找经过身份验证的用户以及其他与身份验证相关的顶级内容的地方。