我有一個CakePHP 2.0應用程序,它使用AuthComponent和User
模型成功登錄來管理帖子和其他控制器和模型。我會稱之爲網站的「超級管理員」部分。CakePHP驗證組件 - 可能有兩個單獨的登錄名?
但是,我需要爲廣告客戶創建一個完全獨立的網站部分。我創建了模型Advertiser
和控制器AdvertisersController
。我也創建了表advertisers
。我能夠成功添加廣告客戶用戶,但是當我嘗試登錄時,它會失敗,並顯示無效的用戶名或密碼錯誤。
我跟着食譜建議Authentication和我AdvertisersController
的beforeFilter
嘗試這兩個選項:
任何想法?是不是可以使用兩個不同的模型/控制器的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>
這裏嘗試了答案: http://stackoverflow.com/questions/2973620/cakephp-auth-with-multiple-users-tables – jeremyharris
謝謝你的推薦。但是,這種情況有點不同 - 很多模型,一個Auth登錄。我有兩個單獨的登錄 - 故意這樣。 – deewilcox
我會爲所有用戶使用一張表,並將它們放在不同的組中。 [ACL](http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html)是實現該目標的一種方式。 – bfavaretto