根据我创建的文档,我无法在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>
答案 0 :(得分:2)
登录的用户详细信息应如下所示:
$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。