cakephp:管理员用户的单独数据库访问

时间:2010-12-12 14:10:37

标签: php cakephp

我一直在使用cakephp来创建Web应用程序。在我目前的项目中,有两个数据库用户,一个用于管理员另一个用于站点用户,如何配置cakephp以便管理员可以登录到具有更多数据库操作权限的站点?

谢谢

2 个答案:

答案 0 :(得分:3)

我同意。有时,在应用程序层中处理权限比在数据库层中处理更好。但是,如果确实想要在数据库中拥有额外的安全层,那么您应该设置多个数据库连接:

var $default = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'normaluser',
    'password' => '',
    'database' => 'db',
    'prefix' => '',
);

var $admin = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'adminuser',
    'password' => '',
    'database' => 'db',
    'prefix' => '',
);

如果用户在管理部分,或者您可能施加的任何条件,则可以使用$this->ModelName->setDataSource('admin')

我建议您查看admin_前缀路由。 CakePHP可让您轻松处理管理员权限。 Prefix Routing此外,您可以在users表中添加一个字段来指示用户的角色,并根据当前前缀进行检查。

答案 1 :(得分:0)

最强大的解决方案可能是设置访问控制列表(ACL)。这将允许您根据您指定的用户角色委派权限。

例如,admin的group_id为1,用户的group_id为2.然后,您可以允许管理员访问您的网络应用中的某些操作。

这是关于此功能的蛋糕文档。 http://book.cakephp.org/view/1242/Access-Control-Lists