我正在开发基于CakePHP的项目。
有多个用户具有不同的视图和权限。如何管理他们的登录过程?我应该在每个控制器中实现登录功能吗?或者为所有人制作一个脚本或功能?这是否意味着管理授权过程的所有用户都会有一个控制器?
答案 0 :(得分:0)
一次登录。 CakePHP具有一些功能,您可以根据其登录状态更改其外观和可用页面和功能。
访问控制列表或ACL,请参阅http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html ACL比其他解决方案更难设置,但如果您有一个复杂的功能列表,用户可能拥有或可能没有权限个人基础,这就是ACL的用途。很多时候这个功能都是矫枉过正的。
在用户上设置与用户级别对应的字段。然后根据登录的人来切换布局。例如,假设你有一个名为role的字段,可以是#34; god"," admin"或"用户",以及与它们对应的布局" god.ctp"," admin.ctp"," user.ctp"然后你可以添加AppController的前置过滤器:
public function beforeFilter()
{
if($this->Auth->user())
$this->layout = $this->Auth->user('role');
}
然后,只需使用Auth的组件isAuthorized功能拒绝或允许各种角色的用户访问。例如,在AppController中:
public function isAuthorized($user)
{
// Admin and god can access every action, including those with the admin prefix
if (isset($user['role']) && in_array($user['role'], array('admin', 'god')))
{
return true;
}
//allow all logged in users access to items without a prefix
if( !isset($this->params['prefix'])) return true;
// Default deny -- regular users can't access pages with the admin prefix
return false;
}
我建议您阅读Auth组件 - http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html