2013-01-23 66 views
1

問題


嗨,我是新來的Zend框架1(我知道有一個版本2,但我們需要的版本1的攜手合作,這個項目)所以不知道這是否是一個愚蠢的問題。除此之外,我發現很難找到關於註冊和登錄的好文檔,我設法使用ACL和Auth的系統工作正常。Zend框架1個ACL:允許所有和拒絕一些

我只是想知道我的ACL是否正確。 這是我的課是什麼樣子現在:

類bckstg_Acl擴展Zend_Acl裏{ 公共職能__construct() {

$this->addRole(new Zend_Acl_Role('guest')); 
    $this->addRole(new Zend_Acl_Role('user'), 'guest'); 
    $this->addRole(new Zend_Acl_Role('admin'), 'user'); 

    $this->add(new Zend_Acl_Resource('error::error')); 
    $this->add(new Zend_Acl_Resource('auth::login')); 
    $this->add(new Zend_Acl_Resource('auth::register')); 
    $this->add(new Zend_Acl_Resource('auth::logout')); 
    $this->add(new Zend_Acl_Resource('data::render')); 
    $this->add(new Zend_Acl_Resource('index::index')); 
    $this->add(new Zend_Acl_Resource('admin::index')); 
    $this->add(new Zend_Acl_Resource('auth::noauth')); 

    //$this->allow('guest', 'error', 'error'); 
    $this->allow('guest', 'auth::noauth'); 
    $this->allow('guest', 'auth::login'); 
    $this->allow('guest', 'data::render'); 
    $this->allow('guest', 'index::index'); 
    $this->allow('guest', 'auth::register'); 
    $this->allow('user', 'auth::logout'); 
    $this->allow('admin', 'admin::index'); 
} } 


問題


我注意到,如果我不向資源添加新的控制器,則3種用戶類型(訪客,用戶或管理員)都不能看到該頁面。但我想知道是否有方法可以說所有用戶都能看到一切?因爲基本上我只需要拒絕客人喜歡我的應用程序和用戶和訪客的管理面板系統,除此之外他們可以看到所有頁面。

回答

2

如果您發現特定的控制器(S)或模塊(S)就可以初始化你ACL

我對這種方式是要求在前端控制器插件,如果我需要設置ACL,所以:

// Register ACL plugin if is admin module 
if($request->getModuleName() == 'admin'){ 
    $auth = Zend_Auth::getInstance(); 
    $acl  = new My_Acl_Acl(); 
    $front = Zend_Controller_Front::getInstance(); 
    $front->registerPlugin(new My_Plugin_AclControl($auth, $acl)); 
} 

對於其他網站(默認模塊)ACL永遠不會被要求獲得權限,只能用於管理模塊。

你在互聯網上大量的文獻,但這個博客已經幫了我很多在一開始http://www.amazium.com/blog/label/zend_acl/page/1

+0

謝謝你,以後我會試試這個。不知道你可以這樣做!感謝文獻,已經看到了一些有趣的事情! –

+0

這工作輝煌順便!如果有人需要這個:我使用getControllerName指向控制器。再次感謝! –

+0

我建議你爲ZF開啓自動完成功能,像NetBeans這樣的IDE有這個選項。 http://stackoverflow.com/q/7487737/949273 – tasmaniski

相關問題