2012-05-24 52 views
0

我有一個CakePHP 2.0應用程序,它使用AuthComponent和User模型成功登錄來管理帖子和其他控制器和模型。我會稱之爲網站的「超級管理員」部分。CakePHP驗證組件 - 可能有兩個單獨的登錄名?

但是,我需要爲廣告客戶創建一個完全獨立的網站部分。我創建了模型Advertiser和控制器AdvertisersController。我也創建了表advertisers。我能夠成功添加廣告客戶用戶,但是當我嘗試登錄時,它會失敗,並顯示無效的用戶名或密碼錯誤。

我跟着食譜建議Authentication和我AdvertisersControllerbeforeFilter嘗試這兩個選項:

​​

任何想法?是不是可以使用兩個不同的模型/控制器的AuthComponent?

編輯:我我AdvertisersController更新到這一點:

public function beforeFilter() { 

    parent::beforeFilter(); 

    $this->Auth->authenticate = array(
     AuthComponent::ALL => array('userModel' => 'Advertiser'), 
     'Form', 
     'Basic' 
    ); 
    $this->Auth->allow('add', 'logout'); // Letting advertisers register themselves 

} 

現在登錄是完全失敗 - 沒有失敗的密碼錯誤。我甚至嘗試了一個假的用戶名和密碼。這是在我的控制器的登錄方法:

public function login() { 
     if ($this->request->is('post')) { 
      if ($this->Auth->login()) { 
       $this->redirect(array('controller' => 'advertisers', 'action' => 'admin')); 
      } else { 
       $this->Session->setFlash(__('Invalid username or password, try again')); 
      } 
     } 
    } 

我增加了一個else print_r($this->data); exit;語句的第一個,如果收盤後,就有了一個空數組。甚至無法進入登錄頁面。

此外,窗體的輸出是這樣的 - POST是方法。

<form action="/advertisers/login?url=advertisers%2Flogin" id="AdvertiserLoginForm" method="post" accept-charset="utf-8"> 
    <div style="display:none;"><input type="hidden" name="_method" value="POST"/></div>  
    <fieldset> 
     <legend>Please enter your username and password</legend> 
     <div class="input text required"> 
      <label for="AdvertiserUsername">Username</label> 
      <input name="data[Advertiser][username]" maxlength="50" type="text" id="AdvertiserUsername"/> 
     </div> 
     <div class="input password required"> 
      <label for="AdvertiserPassword">Password</label> 
      <input name="data[Advertiser][password]" type="password" id="AdvertiserPassword"/> 
     </div>  
    </fieldset> 
    <div class="submit"> 
     <input type="submit" value="Login"/> 
    </div> 
</form> 
+0

這裏嘗試了答案: http://stackoverflow.com/questions/2973620/cakephp-auth-with-multiple-users-tables – jeremyharris

+0

謝謝你的推薦。但是,這種情況有點不同 - 很多模型,一個Auth登錄。我有兩個單獨的登錄 - 故意這樣。 – deewilcox

+0

我會爲所有用戶使用一張表,並將它們放在不同的組中。 [ACL](http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html)是實現該目標的一種方式。 – bfavaretto

回答

0

我轉推了此問題的更多信息here。 Joshua在獲得管理員前綴方面有很大的幫助。如果您的應用看起來「太多」 - 請在此處查看他的評論。它看起來比它更復雜,它有助於更​​加明確地控制用戶控件。