0

我有一个网站,除了一个特定于用户或特定组的发布页面之外,所有页面都可供公众访问。我有一个单独的登录页面,可以根据身份验证访问“发布”页面。我该怎么做解决这个问题?使用 Acl 或授权功能?我很困惑..我还需要使用相同的用户表来验证此页面,在这种情况下,我是否将此用户登录页面用作其他登录页面中的元素。有人可以提示我如何进行吗?

4

3 回答 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 回答