Php yii2哈希密码注册和登录
我无法使用此脚本成功登录 Loginform.phpPhp yii2哈希密码注册和登录,php,hash,yii2,passwords,Php,Hash,Yii2,Passwords,我无法使用此脚本成功登录 Loginform.php public function validatePassword($attribute, $params) { if (!$this->hasErrors()) { $user = $this->getUser(); if (!$user || $user->validatePassword($this->password)) { $this->a
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || $user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect name/password.');
}
}
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
if ($this->isNewRecord) {
$this->password = $this->setPassword($this->password);
}
return true;
}
return false;
}
public function validatePassword($password) {
return Yii::$app->getSecurity()->validatePassword($password, $this->password);
}
public function setPassword($password) {
return $this->password = Yii::$app->security->generatePasswordHash($password);
}
public function signup() {
if($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->save();
return $user;
}
return null;
}
public $c_password; //Define a variable for confirm password
//This is rule
public function rules() {
return [
[['fname', 'lname', 'username', 'password',], 'required'],
[['fname', 'lname', 'authKey', 'accessToken'], 'string', 'max' => 100],
[['authKey', 'accessToken'], 'safe'],
[['username'], 'unique'],
['c_password', 'required'],
['c_password', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"],
];
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->password = Yii::$app->security->generatePasswordHash($this->password);
return true;
} else {
return false;
}
}
public function actionRegister() {
$model = new \app\models\Users;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
Yii::$app->session->setFlash('register', 'Registration Successful');
return $this->redirect(['login']);
} else {
return $this->render('register', ['model' => $model]);
}
}
<?php
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
'template' => "{input}\n{error}",
'options' => [
'tag' => false,
],
],
]);
?>
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
<?= $form->field($model, 'password')->passwordInput([]) ?>
<?= $form->field($model, 'c_password')->passwordInput([]) ?>
<button type="submit">Sign up</button>
<?php ActiveForm::end(); ?>
在我的模型中,我有这个
User.php
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || $user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect name/password.');
}
}
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
if ($this->isNewRecord) {
$this->password = $this->setPassword($this->password);
}
return true;
}
return false;
}
public function validatePassword($password) {
return Yii::$app->getSecurity()->validatePassword($password, $this->password);
}
public function setPassword($password) {
return $this->password = Yii::$app->security->generatePasswordHash($password);
}
public function signup() {
if($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->save();
return $user;
}
return null;
}
public $c_password; //Define a variable for confirm password
//This is rule
public function rules() {
return [
[['fname', 'lname', 'username', 'password',], 'required'],
[['fname', 'lname', 'authKey', 'accessToken'], 'string', 'max' => 100],
[['authKey', 'accessToken'], 'safe'],
[['username'], 'unique'],
['c_password', 'required'],
['c_password', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"],
];
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->password = Yii::$app->security->generatePasswordHash($this->password);
return true;
} else {
return false;
}
}
public function actionRegister() {
$model = new \app\models\Users;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
Yii::$app->session->setFlash('register', 'Registration Successful');
return $this->redirect(['login']);
} else {
return $this->render('register', ['model' => $model]);
}
}
<?php
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
'template' => "{input}\n{error}",
'options' => [
'tag' => false,
],
],
]);
?>
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
<?= $form->field($model, 'password')->passwordInput([]) ?>
<?= $form->field($model, 'c_password')->passwordInput([]) ?>
<button type="submit">Sign up</button>
<?php ActiveForm::end(); ?>
这是我的注册脚本
Signupform.php
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || $user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect name/password.');
}
}
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
if ($this->isNewRecord) {
$this->password = $this->setPassword($this->password);
}
return true;
}
return false;
}
public function validatePassword($password) {
return Yii::$app->getSecurity()->validatePassword($password, $this->password);
}
public function setPassword($password) {
return $this->password = Yii::$app->security->generatePasswordHash($password);
}
public function signup() {
if($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->save();
return $user;
}
return null;
}
public $c_password; //Define a variable for confirm password
//This is rule
public function rules() {
return [
[['fname', 'lname', 'username', 'password',], 'required'],
[['fname', 'lname', 'authKey', 'accessToken'], 'string', 'max' => 100],
[['authKey', 'accessToken'], 'safe'],
[['username'], 'unique'],
['c_password', 'required'],
['c_password', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"],
];
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->password = Yii::$app->security->generatePasswordHash($this->password);
return true;
} else {
return false;
}
}
public function actionRegister() {
$model = new \app\models\Users;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
Yii::$app->session->setFlash('register', 'Registration Successful');
return $this->redirect(['login']);
} else {
return $this->render('register', ['model' => $model]);
}
}
<?php
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
'template' => "{input}\n{error}",
'options' => [
'tag' => false,
],
],
]);
?>
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
<?= $form->field($model, 'password')->passwordInput([]) ?>
<?= $form->field($model, 'c_password')->passwordInput([]) ?>
<button type="submit">Sign up</button>
<?php ActiveForm::end(); ?>
有人能帮我吗?谢谢。请遵循以下步骤:
Model User.php
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || $user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect name/password.');
}
}
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
if ($this->isNewRecord) {
$this->password = $this->setPassword($this->password);
}
return true;
}
return false;
}
public function validatePassword($password) {
return Yii::$app->getSecurity()->validatePassword($password, $this->password);
}
public function setPassword($password) {
return $this->password = Yii::$app->security->generatePasswordHash($password);
}
public function signup() {
if($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->save();
return $user;
}
return null;
}
public $c_password; //Define a variable for confirm password
//This is rule
public function rules() {
return [
[['fname', 'lname', 'username', 'password',], 'required'],
[['fname', 'lname', 'authKey', 'accessToken'], 'string', 'max' => 100],
[['authKey', 'accessToken'], 'safe'],
[['username'], 'unique'],
['c_password', 'required'],
['c_password', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"],
];
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->password = Yii::$app->security->generatePasswordHash($this->password);
return true;
} else {
return false;
}
}
public function actionRegister() {
$model = new \app\models\Users;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
Yii::$app->session->setFlash('register', 'Registration Successful');
return $this->redirect(['login']);
} else {
return $this->render('register', ['model' => $model]);
}
}
<?php
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
'template' => "{input}\n{error}",
'options' => [
'tag' => false,
],
],
]);
?>
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
<?= $form->field($model, 'password')->passwordInput([]) ?>
<?= $form->field($model, 'c_password')->passwordInput([]) ?>
<button type="submit">Sign up</button>
<?php ActiveForm::end(); ?>
iam在site controller中创建注册功能您可以根据需要创建模型
SiteController.php
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || $user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect name/password.');
}
}
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
if ($this->isNewRecord) {
$this->password = $this->setPassword($this->password);
}
return true;
}
return false;
}
public function validatePassword($password) {
return Yii::$app->getSecurity()->validatePassword($password, $this->password);
}
public function setPassword($password) {
return $this->password = Yii::$app->security->generatePasswordHash($password);
}
public function signup() {
if($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->save();
return $user;
}
return null;
}
public $c_password; //Define a variable for confirm password
//This is rule
public function rules() {
return [
[['fname', 'lname', 'username', 'password',], 'required'],
[['fname', 'lname', 'authKey', 'accessToken'], 'string', 'max' => 100],
[['authKey', 'accessToken'], 'safe'],
[['username'], 'unique'],
['c_password', 'required'],
['c_password', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"],
];
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->password = Yii::$app->security->generatePasswordHash($this->password);
return true;
} else {
return false;
}
}
public function actionRegister() {
$model = new \app\models\Users;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
Yii::$app->session->setFlash('register', 'Registration Successful');
return $this->redirect(['login']);
} else {
return $this->render('register', ['model' => $model]);
}
}
<?php
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
'template' => "{input}\n{error}",
'options' => [
'tag' => false,
],
],
]);
?>
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
<?= $form->field($model, 'password')->passwordInput([]) ?>
<?= $form->field($model, 'c_password')->passwordInput([]) ?>
<button type="submit">Sign up</button>
<?php ActiveForm::end(); ?>
这是我的视图文件register.php
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || $user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect name/password.');
}
}
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
if ($this->isNewRecord) {
$this->password = $this->setPassword($this->password);
}
return true;
}
return false;
}
public function validatePassword($password) {
return Yii::$app->getSecurity()->validatePassword($password, $this->password);
}
public function setPassword($password) {
return $this->password = Yii::$app->security->generatePasswordHash($password);
}
public function signup() {
if($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->save();
return $user;
}
return null;
}
public $c_password; //Define a variable for confirm password
//This is rule
public function rules() {
return [
[['fname', 'lname', 'username', 'password',], 'required'],
[['fname', 'lname', 'authKey', 'accessToken'], 'string', 'max' => 100],
[['authKey', 'accessToken'], 'safe'],
[['username'], 'unique'],
['c_password', 'required'],
['c_password', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"],
];
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->password = Yii::$app->security->generatePasswordHash($this->password);
return true;
} else {
return false;
}
}
public function actionRegister() {
$model = new \app\models\Users;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
Yii::$app->session->setFlash('register', 'Registration Successful');
return $this->redirect(['login']);
} else {
return $this->render('register', ['model' => $model]);
}
}
<?php
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
'template' => "{input}\n{error}",
'options' => [
'tag' => false,
],
],
]);
?>
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
<?= $form->field($model, 'password')->passwordInput([]) ?>
<?= $form->field($model, 'c_password')->passwordInput([]) ?>
<button type="submit">Sign up</button>
<?php ActiveForm::end(); ?>
注册
遵循以下步骤:
Model User.php
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || $user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect name/password.');
}
}
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
if ($this->isNewRecord) {
$this->password = $this->setPassword($this->password);
}
return true;
}
return false;
}
public function validatePassword($password) {
return Yii::$app->getSecurity()->validatePassword($password, $this->password);
}
public function setPassword($password) {
return $this->password = Yii::$app->security->generatePasswordHash($password);
}
public function signup() {
if($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->save();
return $user;
}
return null;
}
public $c_password; //Define a variable for confirm password
//This is rule
public function rules() {
return [
[['fname', 'lname', 'username', 'password',], 'required'],
[['fname', 'lname', 'authKey', 'accessToken'], 'string', 'max' => 100],
[['authKey', 'accessToken'], 'safe'],
[['username'], 'unique'],
['c_password', 'required'],
['c_password', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"],
];
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->password = Yii::$app->security->generatePasswordHash($this->password);
return true;
} else {
return false;
}
}
public function actionRegister() {
$model = new \app\models\Users;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
Yii::$app->session->setFlash('register', 'Registration Successful');
return $this->redirect(['login']);
} else {
return $this->render('register', ['model' => $model]);
}
}
<?php
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
'template' => "{input}\n{error}",
'options' => [
'tag' => false,
],
],
]);
?>
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
<?= $form->field($model, 'password')->passwordInput([]) ?>
<?= $form->field($model, 'c_password')->passwordInput([]) ?>
<button type="submit">Sign up</button>
<?php ActiveForm::end(); ?>
iam在site controller中创建注册功能您可以根据需要创建模型
SiteController.php
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || $user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect name/password.');
}
}
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
if ($this->isNewRecord) {
$this->password = $this->setPassword($this->password);
}
return true;
}
return false;
}
public function validatePassword($password) {
return Yii::$app->getSecurity()->validatePassword($password, $this->password);
}
public function setPassword($password) {
return $this->password = Yii::$app->security->generatePasswordHash($password);
}
public function signup() {
if($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->save();
return $user;
}
return null;
}
public $c_password; //Define a variable for confirm password
//This is rule
public function rules() {
return [
[['fname', 'lname', 'username', 'password',], 'required'],
[['fname', 'lname', 'authKey', 'accessToken'], 'string', 'max' => 100],
[['authKey', 'accessToken'], 'safe'],
[['username'], 'unique'],
['c_password', 'required'],
['c_password', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"],
];
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->password = Yii::$app->security->generatePasswordHash($this->password);
return true;
} else {
return false;
}
}
public function actionRegister() {
$model = new \app\models\Users;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
Yii::$app->session->setFlash('register', 'Registration Successful');
return $this->redirect(['login']);
} else {
return $this->render('register', ['model' => $model]);
}
}
<?php
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
'template' => "{input}\n{error}",
'options' => [
'tag' => false,
],
],
]);
?>
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
<?= $form->field($model, 'password')->passwordInput([]) ?>
<?= $form->field($model, 'c_password')->passwordInput([]) ?>
<button type="submit">Sign up</button>
<?php ActiveForm::end(); ?>
这是我的视图文件register.php
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || $user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect name/password.');
}
}
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
if ($this->isNewRecord) {
$this->password = $this->setPassword($this->password);
}
return true;
}
return false;
}
public function validatePassword($password) {
return Yii::$app->getSecurity()->validatePassword($password, $this->password);
}
public function setPassword($password) {
return $this->password = Yii::$app->security->generatePasswordHash($password);
}
public function signup() {
if($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->save();
return $user;
}
return null;
}
public $c_password; //Define a variable for confirm password
//This is rule
public function rules() {
return [
[['fname', 'lname', 'username', 'password',], 'required'],
[['fname', 'lname', 'authKey', 'accessToken'], 'string', 'max' => 100],
[['authKey', 'accessToken'], 'safe'],
[['username'], 'unique'],
['c_password', 'required'],
['c_password', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"],
];
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->password = Yii::$app->security->generatePasswordHash($this->password);
return true;
} else {
return false;
}
}
public function actionRegister() {
$model = new \app\models\Users;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
Yii::$app->session->setFlash('register', 'Registration Successful');
return $this->redirect(['login']);
} else {
return $this->render('register', ['model' => $model]);
}
}
<?php
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
'template' => "{input}\n{error}",
'options' => [
'tag' => false,
],
],
]);
?>
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
<?= $form->field($model, 'password')->passwordInput([]) ?>
<?= $form->field($model, 'c_password')->passwordInput([]) ?>
<button type="submit">Sign up</button>
<?php ActiveForm::end(); ?>
注册
从注册功能$user->setPassword($this->password)中删除此项;您已经在“用户模型除雾保存”功能中定义了它不工作,我的表中没有插入任何内容。。你能提供定制脚本吗?thanksit可能会打印一些验证错误($user->.getError());模具();你能查一下吗this@HasiburRahaman谢谢兄弟!!首先你说得对,我对密码进行了两次哈希运算。。我所做的是保留$user->setPassword($this->password);在注册函数中,删除了$this->password=$this->setPassword($this->password);在beforeSave()中;我最后更改的导致问题的是我的Loginform。如果(!$user | |$user->validatePassword($this->password)){$this->addError($attribute,'error name/password.');}之后出现错误,或者我忘记添加。。谢谢您可以检查am post的答案,这可能有助于您从注册功能$user->setPassword($this->password)中删除此选项;您已经在“用户模型除雾保存”功能中定义了它不工作,我的表中没有插入任何内容。。你能提供定制脚本吗?thanksit可能会打印一些验证错误($user->.getError());模具();你能查一下吗this@HasiburRahaman谢谢兄弟!!首先你说得对,我对密码进行了两次哈希运算。。我所做的是保留$user->setPassword($this->password);在注册函数中,删除了$this->password=$this->setPassword($this->password);在beforeSave()中;我最后更改的导致问题的是我的Loginform。如果(!$user | |$user->validatePassword($this->password)){$this->addError($attribute,'error name/password.');}之后出现错误,或者我忘记添加。。谢谢你可以查看我的帖子,它可能会帮助你