CakePHP用户登录功能

时间:2014-04-27 12:46:06

标签: mysql database cakephp

我已经烘焙了我的项目,并且已经有了在数据库中添加,查看,编辑和删除数据的表单。我的数据库包含一个employee表。它包括一个称为访问级别的字段,可以选择“staff”或“admin”。员工用户名和密码也存储在employee表中。如何创建用户登录功能,以便管理员登录admin时能够对数据库执行任何操作,而不允许员工管理员工表?

1 个答案:

答案 0 :(得分:1)

此问题并未受到如何/谁登录的影响,而是关于授权

使用isAuthorized

简单的身份验证和授权是explained in the book

如果使用控制器授权设置应用程序,则auth组件将使用Controller::isAuthorized来确定请求是否有效。

只需定义功能isAuthorized以满足您的需求

e.g:

class AppController extends Controller {

    public $components = array(
        ...
        'Auth' => array(
            ...
            'authorize' => array('Controller')
        )
    );

    public function isAuthorized($user) {
        if ($user['access_level'] === 'admin') {
            return true;
        }

        return false; // always always default deny
    }
}

以上意味着默认情况下,非管理员用户无法访问任何操作。但是在你的控制器中:

class OthersController extends AppController {

    public function add() {...}

    public function delete() {...}

    public function isAuthorized($user) {
        if ($this->action === 'add')  {
            return true; // Anyone can add
        }

        return parent::isAuthorized($user);
    }
}

这将允许任何授权用户访问其他添加操作。

因此,您可以使用the auth component allow function使匿名用户可以访问操作或控制器;并使用isAuthorized来限制对非管理员用户的访问。