【发布时间】:2010-12-12 14:10:37
【问题描述】:
我一直在使用 cakephp 来创建 Web 应用程序。在我当前的项目中,有两个数据库用户,一个用于管理员,另一个用于站点用户,我该如何配置 cakephp 以便管理员可以登录到具有更多数据库操作能力的站点?
谢谢
【问题讨论】:
我一直在使用 cakephp 来创建 Web 应用程序。在我当前的项目中,有两个数据库用户,一个用于管理员,另一个用于站点用户,我该如何配置 cakephp 以便管理员可以登录到具有更多数据库操作能力的站点?
谢谢
【问题讨论】:
我同意。有时,在应用程序层处理权限比在数据库层处理权限更好。但是,如果您真的,真的希望在您的数据库中也有额外的安全层,那么您应该设置多个数据库连接:
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 此外,您可以在用户表中添加一个字段来指示用户的角色,并根据当前前缀进行检查。
【讨论】:
最强大的解决方案可能是设置访问控制列表 (ACL)。这将允许您根据您指定的用户角色委派权限。
例如 admin 的 group_id 为 1,user 的 group_id 为 2。然后您可以允许管理员访问您的 Web 应用程序中的某些操作。
这是有关此功能的蛋糕文档。 http://book.cakephp.org/view/1242/Access-Control-Lists
【讨论】: