[英]Authentication in cakePHP 2.4
我無法在cakePHP 2.4中登錄用戶,遵循我創建的文檔。 它表示已成功登錄並重定向到目標URL(用戶/已登錄操作),但$this->Auth->username
和$this->Auth->password
保持空白,不會創建任何會話。 嘗試使用錯誤的憑據登錄時,它也會被重定向。 並告訴我登錄成功。 我現在很傻。
AppController.php
class AppController extends Controller {
public $components = array(
'Session',
'DebugKit.Toolbar',
'Auth' => array(
'loginAction' => array('controller' => 'users', 'action' => 'login', 'plugin' => false),
'loginRedirect' => array('controller' => 'users', 'action' => 'loggedin'),
'logoutRedirect' => array('controller' => 'users', 'action' => 'loggedout'),
'authError' => 'UNABLE TO LOG IN.'
)
);
public function beforeFilter(){
$this->Auth->userModel = 'User';
$this->Auth->fields = array('username' => 'username', 'password' => 'password');
$this->Auth->allow('index','display','login','show_reg_form', 'view','signup');
}
}
UsersController.php
我只會粘貼登錄功能:
public function login() {
if ($this->request->is('post')) {
if($this->Auth->login(/*$this->request->data*/)){
$this->Session->setFlash(__('Successfully logged in.'));
return $this->redirect($this->Auth->redirectUrl());
} else {
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
}
login.ctp
相關部分是:
<div class="container-login users form">
<?php echo $this->Form->create('User');
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end(__('Login',true));?>
</div>
登錄的用戶詳細信息應如下所示:
$id = $this->Auth->user('id');
$username = $this->Auth->user('username');
...
$other_field = $this->Auth->user('other_field');
Auth對象中沒有字段用戶名。
您無法使用用戶方法從Auth讀取密碼字段。
如果要獲取密碼,則需要從數據庫中查詢用戶。 但是你應該單獨留下密碼。
編輯:由於您可以訪問“已登錄”頁面,這意味着已創建用戶會話。 您只需要更改訪問用戶數據的方式。
Edit2:通過在Auth中添加以下行來指定身份驗證處理程序:
'Auth' => array(
....
'authenticate' => array('Form')
)
Edit3:再次檢查存儲密碼的數據庫字段是VARCHAR,長度為40。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.