我是cakePHP的新手,我已閱讀他們的文檔,我正在關注他們的簡單身份驗證示例。我也搜索了很多(包括本網站上的答案)以解答我的問題。
我使用CakePHP 2.0和我UsersController的登錄功能如下:
function login() {
if ($this->request->is('post')) {
if ($this->Auth->login(/*$this->request->data*/)) {
$this->redirect($this->Auth->redirect());
}else {
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
}
我AppController的是這樣的:
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'pages', 'action' => 'display'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'display')
)
);
public function beforeFilter() {
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
}
我的用戶模型:
class User extends AppModel {
public $name = "User";
}
登錄表單:
echo $this->Session->flash('auth');
echo $this->Form->create('User', array('action' => 'login'));
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end('Login');
問題是它不會記錄用戶。當$ this-> Auth-> login()被調用時沒有$ this-> request-> data作爲參數,會話中沒有寫入任何內容。頁面只是刷新。但是,當您提供$ this-> request->數據時,會將憑證寫入會話並正確重定向。但是我注意到,即使它們不存在於數據庫中,您也可以使用$ this-> Auth-> login($ this-> request-> data)'登錄'任何人。除此之外,如果我輸入錯誤憑證,則不會顯示任何消息。
我沒有試圖做任何特別的事情,我只想要記錄用戶的能力。我有一個簡單的用戶名錶和用戶名和密碼字段,我已經按照他們的例子閱讀他們的文檔,但仍然沒有我已經嘗試過的工作。
如果我沒有提供提供答覆所需的全部信息,我表示歉意。任何幫助是極大的讚賞。
小心:您必須不惜一切代價留下登錄()。如果您將$ this-> request-> data傳遞給它,它將記錄此用戶,而不管用戶名和密碼是什麼。這會危及您的登錄。嘗試調試查找哈希密碼的內容,並將其與數據庫中的當前哈希字符串進行比較。最有可能他們不匹配! – mark 2012-04-05 11:24:41