我有一个网站,公众可以访问所有页面,除了一个用户特定的版本页面或者特定组。我有一个单独的登录页面,可以根据身份验证访问“版本”页面。我该如何解决这个问题?使用Acl或授权功能?我很困惑。我也需要使用相同的用户表来验证此页面,在这种情况下,我是否将此用户登录页面用作我的其他用户的一个元素登录页面。有人可以提示我如何继续吗?
答案 0 :(得分:1)
ACL在许多情况下都是过度的。
我通常在我的控制器中做的是这样的事情:
public function releases() {
$this->_allowedGroups(array(1,2,3));
// rest of code here
}
然后在我的app控制器中:
public function _allowedGroups($groups=array()) {
if( !in_array($this->Auth->user('group_id'), $groups) ) {
$this->redirect(array('controller'=>'users', 'action'=>'login'));
}
}
答案 1 :(得分:0)
Acl应该做你的工作。 您是否有特殊需要使用单独的登录页面?
如果您实施acl,单个登录页面和单个用户表应该足以满足您的需求。只有那些有权查看“请求”页面的用户才可以这样做。
答案 2 :(得分:0)
在core.php上,放
Configure::write('Routing.prefixes', array('release'));
并在AppController上进行验证:
class AppController extends Controller{
public function beforeFilter(){
if (isset($this->params['prefix']) and $this->params['prefix'] == 'release'){
if ($this->Session->read("User.type") != 'admin'){
//redirect the user or throw an error...
}
}
}
}
因此,youdomain.com/release/*只能由您的管理员访问...
另外,我不明白为什么你需要两个登录页面...你可以在你的用户桌面上放一个标志,说明用户是否是管理员......在登录时,设置用户。在会话上输入属性。
如果您不需要复杂的权限控制,我认为您不需要使用ACL。