【问题标题】:CakePHP Controller beforeFilter custom validation to prevent save data into DBCakePHP 控制器 beforeFilter 自定义验证以防止将数据保存到 DB
【发布时间】:2021-03-19 05:51:29
【问题描述】:

我有一个控制器和一些内部功能。一些功能基本上是将数据保存到数据库中。其中一项功能需要特定类型的用户无法对 DB 进行写入访问的过滤器。

我的问题是如何阻止将数据保存到特定用户角色的数据库中。

class TestController extends AppController {
     public function beforeFilter(){
        if(in_array($this->action, ['f1','f2'])) {
             if($this->authenticatedUser['role'] == 'readonly') {
                //return message
                //block save data into db
             }
         }
     }

     public function f1() {
        //save data into db
     }

     public function f2() {
        //save data into db
     }

     public function f3() {
     }
}

当我尝试使用 f1 或 f2 写入时,它会转到 beforeFilter 并显示消息,但数据也会保存到数据库中。当我尝试在beforeFilter 上将数据写入数据库时​​,我应该如何阻止它。

【问题讨论】:

  • cakephp 版本?
  • @Salines 版本是 2.X

标签: php cakephp cakephp-2.x


【解决方案1】:

这是一些逻辑:

  • 检查请求是否为帖子

  • 检查请求的方法

  • 如果两个检查都匹配,则创建一个 flash 消息并进行 GET 重定向到所需的方法

    if($this->request->is('post') && in_array($this->action, ['f1','f2'])) {
        if($this->authenticatedUser['role'] == 'readonly') {
             //set flash message
             //get redirect to action
        }
    }
    

下一个

function f1() {
   // if request is post, save data
   // else return find data or empty object / array
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多