【问题标题】:CakePHP: Make datafield admin-editable onlyCakePHP:使数据字段仅可管理员编辑
【发布时间】:2010-10-01 13:16:21
【问题描述】:

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

【问题讨论】:

    标签: php cakephp cakephp-1.3


    【解决方案1】:

    不必创建新的控制器动作,但您可以决定这样做。请注意,您仍然可以使用 $this->render("edit") 对其使用相同的视图,请参阅:http://book.cakephp.org/view/428/render

    我认为你应该:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 这很容易实现,但并不安全。 如果一个邪恶的用户会提供一个包含该字段的手动修改的 HTTP POST 请求,他仍然可以编辑它。
        • 我在讨论会话中保存的角色。如果他们自己不安全,那么世界上没有任何网站是安全的。但我想你的意思是 POST 部分本身。没有马上明白。当然,您始终需要确保用户不能“保存”比他们应该的更多数据。但这必须在调用 save() 之前在控制器中完成。详情:dereuromark.de/2010/09/21/saving-model-data-and-security
        • 谢谢,那篇博文似乎对我有用。 (用英语和母语为母语的人交流感觉很奇怪)
        猜你喜欢
        • 2018-08-22
        • 1970-01-01
        • 1970-01-01
        • 2014-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-09
        • 2012-07-18
        相关资源
        最近更新 更多