在我的旧cakephp 2.x应用程序中,当我从用户模型中检索数据时,密码哈希被'*'隐藏。我不是一个真正的hundret,但我认为这是由Cake自动完成的。
现在测试Cakephp3.0,我很惊讶从用户模型中检索数据时发现完整的哈希值。
我有一些关于这个密码哈希隐藏的问题:
非常感谢你的帮助。
答案 0 :(得分:2)
我认为这是cakephp2中的一个功能吗?
是的,在Cake 2.x中,这是调试器的一部分,但是数据本身没有被触及,只是在输出数据时屏蔽了一些内容。
有谁知道,为什么这个功能没有在Cakephp3中实现?为什么?
它仍在实施,但它已被移动。这个掩盖事物的重点是避免意外暴露数据源凭证(主要是在错误消息/页面中),它从来没有真正与可能的用户模型数据有关,这只是碰巧使用密钥的数据的副作用比如password
。
因此,在3.x中,此功能已移至\Cake\Database\Connection::__debugInfo()
<强> https://github.com/cakephp/cakephp/pull/4542 强>
这确保您在例如调试连接对象(显式或隐式在错误页面上)时仍然会使用屏蔽凭据,同时它不会阻碍调试其他数据。
[...],在[...] cake3中实现此功能的地方在哪里?
这在很大程度上取决于您的用例,如果您想要在调试输出中屏蔽它,那么您可以在用户实体类中的重写__debugInfo()
方法中实现它,类似于Connection
班正在这样做。
<强> https://github.com/cakephp/cakephp/blob/3.0.11/src/Database/Connection.php#L702 强>
当然,这只适用于实体,不适用于非水合数据(阵列数据)。