我有一个网站,除了一个特定于用户或特定组的发布页面之外,所有页面都可供公众访问。我有一个单独的登录页面,可以根据身份验证访问“发布”页面。我该怎么做解决这个问题?使用 Acl 或授权功能?我很困惑..我还需要使用相同的用户表来验证此页面,在这种情况下,我是否将此用户登录页面用作其他登录页面中的元素。有人可以提示我如何进行吗?
问问题
323 次
3 回答
1
ACL 在很多情况下都是多余的。
我通常在我的控制器中做的是这样的事情:
public function releases() {
$this->_allowedGroups(array(1,2,3));
// rest of code here
}
然后在我的应用控制器中:
public function _allowedGroups($groups=array()) {
if( !in_array($this->Auth->user('group_id'), $groups) ) {
$this->redirect(array('controller'=>'users', 'action'=>'login'));
}
}
于 2013-10-29T12:26:08.817 回答
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/* 只能由您的管理员访问...
另外,我不明白你为什么需要两个登录页面......你可以在你的用户表上放一个标志,说明用户是否是管理员......并在登录时,将 User.type 属性设置为会议。
如果您不需要复杂的权限控制,我认为您不需要使用 ACL。
于 2013-10-30T02:26:53.727 回答
0
Acl 应该做你的工作。您是否有任何特定需要使用单独的登录页面?
如果您实现 acl,则单个登录页面和单个用户表应该足以满足您的需求。只有那些有权查看请求页面的用户才被允许这样做。
于 2013-10-29T11:26:19.963 回答