0

我有一个工作项目,我想通过身份验证进行扩展。我在这里遵循了简单的身份验证和授权教程。

登录工作,我可以打印用户名等。但访问控制不起作用。方法 isAuthorized 根本不起作用。我在这里想念什么?

编辑 - 我收到以下错误;

"You are not authorized to access that location."

我的 AppController 的一部分:

public $components = array('Flash', 'RequestHandler', 'Cookie', 'Session', 'Auth' => array(
        'loginRedirect' => array(
            'controller' => 'status',
            'action' => 'index'
        ),
        'logoutRedirect' => array(
            'controller' => 'user',
            'action' => 'login'
        ),
        'authenticate' => array(
            'Form' => array(
                'passwordHasher' => 'Blowfish'
            ),
        ),
        'authorize' => array('Controller')
    ));

public function isAuthorized($user)
{
    if (isset($user['role']) && $user['role'] === 'admin') return true;

    return false;
}

我的任务控制器的一部分:

public function isAuthorized($user)
{
    debug($user); die();

    if ($this->action === 'index') return true;

    if (in_array($this->action, array('edit', 'delete')))
    {
        $postId = (int) $this->request->params['pass'][0];
        if ($this->Post->isOwnedBy($postId, $user['id'])) return true;
    }

    return parent::isAuthorized($user);
}

用户控制器的一部分:

public function login()
{
    if ($this->request->is('post'))
    {
        if ($this->Auth->login())
        {
            return $this->redirect($this->Auth->redirectUrl()); // This is being called after login so it seems to work!
        }

        $this->Flash->error(__('Invalid username or password, try again'));
    }
}
4

0 回答 0