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