Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP:仅使数据字段管理可编辑_Php_Cakephp_Cakephp 1.3 - Fatal编程技术网

CakePHP:仅使数据字段管理可编辑

CakePHP:仅使数据字段管理可编辑,php,cakephp,cakephp-1.3,Php,Cakephp,Cakephp 1.3,在我的数据模型中,我有一个字段,该字段应该只能由管理员编辑。普通用户可以编辑模型中的记录并查看此特定字段,但他们不应该能够编辑它。是否有一种简单/干净的方法可以做到这一点?我想有必要创建一个额外的管理编辑控制器操作,但在控制器中“锁定”数据字段的最佳方法是什么?根据您的设置,这可以作为模型中的验证方法轻松处理。在模型中编写自定义函数以检查用户是否具有权限 您还可以使用beforeSave()在模型中执行此操作。如果该字段在那里,但他们没有权限,请将其删除。无需创建新的控制器操作,但您可以决定这样

在我的数据模型中,我有一个字段,该字段应该只能由管理员编辑。普通用户可以编辑模型中的记录并查看此特定字段,但他们不应该能够编辑它。是否有一种简单/干净的方法可以做到这一点?我想有必要创建一个额外的管理编辑控制器操作,但在控制器中“锁定”数据字段的最佳方法是什么?

根据您的设置,这可以作为模型中的验证方法轻松处理。在模型中编写自定义函数以检查用户是否具有权限


您还可以使用beforeSave()在模型中执行此操作。如果该字段在那里,但他们没有权限,请将其删除。

无需创建新的控制器操作,但您可以决定这样做。请注意,您仍然可以使用
$this->render(“edit”)
为其使用相同的视图,请参见:

我认为你应该:

  • 如果用户和管理员不感到困惑,请使用相同的控制器操作
  • 仅当用户为管理员时显示输入字段,并为其他用户输出文本
  • 检查控制器中的授权

您可以在编辑视图中简单地检查管理员角色

if (hasRoleAdmin) {
 echo $this->Form->input(...);
}

这很容易实现,但并不安全。如果一个邪恶的用户会提供一个包含此字段的手工修改的HTTP POST请求,他仍然可以编辑它。如果他们自己不安全,世界上没有一个网站是安全的。但我猜你指的是文章本身。我没马上明白。当然,您始终需要确保用户不能“保存”更多的数据。但这必须在调用save()之前在控制器中完成。细节:谢谢,那篇博文似乎对我很有用。(与母语为你自己语言的人用英语交流感觉很奇怪)