cakephp根据用户状态限制操作

时间:2016-08-22 08:13:22

标签: cakephp authorization cakephp-3.2

我正在使用CakePHP 3.2开发卖家小组。

sellers表来存储所有详细信息和凭据,整数类型上有一列status

status列用于标记卖家是否已批准

0 = Registered not approved
1 = Approved
2 = Canceled

sell中有ProductsController.php次操作。

我想允许此操作仅限状态为1的卖家。如果用户未获批准,则按照状态ID打印消息

1 : Sorry! Your account is not verified yet.
2 : Sorry! Your account has been canceled. Contact Admin.

这就是我正在采取的阻止sell行动的方法。我在beforeFilter()

ProductsController.php中添加了以下代码
public function beforeFilter(Event $event)
    {
        parent::beforeFilter($event);

        if ($this->Auth->user('status') != 1) {
            $this->Auth->deny(['sell']);
        }
    }

但这不起作用,所有卖家仍然可以使用sell行动。

1 个答案:

答案 0 :(得分:0)

您需要将'checkAuthIn'上的身份验证配置initialize()更改为'Controller.initialize'(默认'Controller.startup'):

$this->Auth->config('checkAuthIn', 'Controller.initialize');

documentation中所述,在$this->Auth->user()中使用beforeFilter()