Auth-> identはパスワードを確認せずに有効なユーザ名ログインを許可します。私が必要とするのは有効なユーザー名で、ダッシュボードを簡単に開くことができます。私がlogin.ctpのパスワードをpassword2に変更したとき、私はもうログインできません。これは私が昨日から直面している奇妙な問題ですが、それを解決する方法を理解していませんでした。CakePHP 3:Auth-> identify()は常にパスワードを確認せずに有効なユーザ名を入力します
これはapp.php
$this->loadComponent('Auth',['loginRedirect'=>['controller'=>'Dashboard','action'=>'index'],
'logoutRedirect'=>['controller'=>'Users',"action"=>"login"],
'authorize' => array('Controller')
]);
これは私のログイン図である。
<form class="login-form" method="post">
<input type="text" placeholder="<?php echo __("Username");?>" name="username" />
<input type="password" placeholder="<?php echo __("Password");?>" name="password"/>
<button id="btn_login"><?php echo __("Login");?></button>
</form>
がUserControllerでの私のログイン機能:
public function login()
{
if ($this->request->is('post')) {
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
return $this->redirect($this->Auth->redirectUrl());
} else {
$this->Flash->error(__('Username or password is incorrect'));
}
}
}
そして最後に混乱があることもここでは、古い開発者はapp_membersというユーザー用のテーブルを作成します。彼は次のように書いたように、ユーザーと呼ばれるデータベースにはテーブルがありません:
<?php
namespace App\Model\Entity;
use Cake\Auth\DefaultPasswordHasher;
use Cake\ORM\Entity;
class User (or AppMember) extends Entity
{
protected $_accessible = ['*'=> true,'id' => false];
protected function _setPassword($password)
{
return (new DefaultPasswordHasher)->hash($password);
}
}
?>
とモデル/テーブル/ UsersTable.php彼のために:モデル/エンティティで
user.phpとappMemberの両方が、これを含んでいappMemberから延長:
<?php
namespace App\Model\Table;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class UsersTable extends Table
{
public function initialize(array $config)
{
$this->table('app_member');
}
public function validationDefault(Validator $validator)
{
return $validator
->notEmpty('username', 'A username is required')
->notEmpty('password', 'A password is required')
->notEmpty('role', 'A role is required');
}
}
編集1: app.phpのisAuthorized機能:
をpublic function isAuthorized($users)
{
if(isset($users))
{
return true;
}
else{
return false;
}
}
は 'app_member'行いませパスワードという名前の列が含まれている、とあなたはハッシュされた値が格納されて見ていますパスワードは? – cgTag
うん、すべてapp_memberでうまくいくようだし、すでにパスワードフィールド@cgTagがある。 –
'function isAuthorized($ user = null)'関数をコントローラから共有できますか? – cgTag