2010-10-29 64 views
1

我正在使用cakePHP構建應用程序。我們是否有一種方法可以讓公共用戶在不登錄的情況下訪問特定頁面。關於整個組織或聯繫我們頁面,我們會有幾頁介紹我們。有沒有避免登錄訪問的方法,類似於我們如何添加組件或設置佈局的方法。無需登錄即可進行操作/頁面

+0

您可以利用ACT的+ AUTH – 2010-10-30 12:00:24

回答

1

正如Martin Bean所說,您可以使用ACL。對於一個複雜的網站,這將是我的選擇。您不必登錄即可訪問公共頁面。 http://multiheadweighers.co.uk是使用ACL的站點的示例。在公共頁面背後有一個功能齊全的CMS。

對於一個簡單的網站,我會允許訪問,例如,視圖操作使用

function beforeFilter() { 
    parent::beforeFilter; 
    $this->Auth->allow('view'); 
} 

見:http://book.cakephp.org/view/1257/allow

這真的不是什麼大不了的 - 嘗試它,你會看看它是多麼容易。

編輯:

從書@http://book.cakephp.org/view/1550/Setting-up-permissions

現在,我們要拿出引用 到Auth->檢查allowedActions在用戶 和組控制器。然後添加 以下到您的文章和widget 控制器:

function beforeFilter() 
{  
    parent::beforeFilter();  
    $this->Auth->allowedActions = array('index', 'view'); 
} 

刪除「斷開關」我們把前面的用戶和組控制器,並提供了有關指標,並查看行動的公共訪問在帖子和小部件控制器中。在AppController :: beforeFilter()中添加以下內容:

$this->Auth->allowedActions = array('display'); 

這會使「顯示」操作公開。這將保持我們的PagesController :: display()公開。這很重要,因爲默認路由通常將此操作作爲您應用程序的主頁。

編輯2:

$user = ($this->Auth->user())?$this->Auth->user():'Anonymous'; 
    if(!$this->Acl->check($user,"{$url}")) 
     $this->redirect($this->referer()); // or whatever action you want to take. 
+1

沒有ACL用於控制對註冊用戶的訪問權限? ACL如何成爲讓未註冊用戶訪問公共頁面的一部分?它應該由Auth組件完成是不是?你能解釋一下ACL如何用於此? – macha 2010-10-29 16:58:49

+0

是的,但這並不意味着一切都必須由ACL控制 - 可以排除。看到我上面的編輯。我遇到了一些粘性的情況,我不得不做一些類似於我的第二次編輯的事情。 – Leo 2010-10-29 17:14:21

+0

ACL和認證一起工作。 – Leo 2010-10-29 17:16:45

1

的解決辦法是使用方法允許在驗證組件,讓用戶訪問這些頁面。

謝謝!

相關問題