Yii2用户Dektrium-如何散列密码
我想对密码进行散列,并用数据库检查(密码\u散列) 我该怎么做Yii2用户Dektrium-如何散列密码,yii2,yii2-extension,Yii2,Yii2 Extension,我想对密码进行散列,并用数据库检查(密码\u散列) 我该怎么做 $username = $auth['username']; 我的密码是 $password = $auth['password']; 我想知道: $find = \dektrium\user\models\User::findOne(['username' => $username, 'password_hash' => $password]); 您可以使用 $hash = Yii::$app
$username = $auth['username'];
我的密码是
$password = $auth['password'];
我想知道:
$find = \dektrium\user\models\User::findOne(['username' => $username, 'password_hash' => $password]);
您可以使用
$hash = Yii::$app->getSecurity()->generatePasswordHash($password);
$find = \dektrium\user\models\User::findOne(['username' => $username,
'password_hash' => $hash]);
下面的代码来自dektrium/yii2 user/helpers/password.php(dektrium adn的hash函数..的代码,您可以看到扩展使用generatePasswordHash和一个cost
public static function hash($password)
{
return \Yii::$app->security->generatePasswordHash($password,
\Yii::$app->getModule('user')->cost);
}
默认成本=8我知道回答这个问题已经很晚了,但对于那些仍在寻找的人来说..我最近遇到了这个问题,经过大量测试,下面的代码对我有效:
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
'auth' => function ($username, $password) {
$user = \dektrium\user\models\User::findOne(['username' => $username]);
if ($user->validate($password)) {
return $user;
}
return null;
}
];
这不是真的!这个插件使用另一种方式来散列密码@ScaisEdge@Saltern.dektrium Yi2用户是na扩展..(不是插件)…答案更新了一个简短的建议…希望很清楚..对你来说…成本每次都在变化吗?因为我用这种方式散列密码,这不起作用,我不知道你是否有另一个成本..分配..(但不应该每次都改变..应该是固定的..)和\Yii::$app->getModule('user'))->cost应该返回您的本地成本..分配OK…谢谢..然后您必须使用此技术进行筛选..用户。我理解..但是我希望我的建议可能有用你好,欢迎使用stackoverflow。您可以添加一些关于这是如何解决问题的好答案的详细信息,而不是仅仅说它解决了问题吗问题