2012-07-21 201 views
1

我有一個網站有3種不同的用戶角色:guest(未註冊),member和admin。Zend框架 - 控制訪問控制器

我想限制訪問控制器,如下所示。

AuthController - >嘉賓,成員,管理員

AdminController - >管理

MemberController - >成員

有一個簡單的方法來做到這一點,而無需使用Zend_Acl裏?我真的不明白如何實際使用Zend_Acl。

回答

1

我發現this tutorial對於實現一個簡單的Auth & ACL方案非常有用。

它調用創建一個Front Controller Plugin &自定義Zend_ACL類。

編輯:在您的評論回答這個問題

您可以定義的資源,而動作部分

// Add some resources in the form controller 
    $this->add(new Zend_Acl_Resource('error')); 
    $this->add(new Zend_Acl_Resource('auth')); 

    // Allow guests to see the error, login and index pages 
    $this->allow('guest', 'error'); 
    $this->allow('guest', 'auth'); 

不要在前面插件檢查行動

if(!$acl->isAllowed($user->role, $request->getControllerName())) { 

我沒有測試它,但它應該工作。

+0

謝謝你,那個鏈接很好,很容易理解。一個問題,但。我沒有爲每一個控制器/操作輸入「新的Zend_Acl_Resource('auth :: login')」。我可以使用「auth :: all」來指定控制器中的所有操作嗎? – Ayrx 2012-07-21 10:48:17

+0

@TerryChia看到我編輯的答案。 – Bogdan 2012-07-21 11:21:51

0

曾經有一個proposal官方的前端控制器插件,但遺憾的是沒有多少出現。該代碼仍然可用,但有一個tutorial on the Zend DevZone blog.

它可能是值得的檢查ZF 2.0即將發生的變化,他們根據一些提案的答覆更改訪問部分。