laravel-admin中项目有可能不是一味地用后台注册管理,例如统计类的app就需要额外的使用注册登录,这我们就需要了解laravel的加密方式
看此文章时可以结合Laravel 中的 App_KEY中单项哈希来理解
laravel-admin 密码加密用的是laravel中的bcrypt
函数, 最后调用的是系统函数password_hash
\vendor\encore\laravel-admin\src\Console\CreateUserCommand.php
\vendor\laravel\framework\src\Illuminate\Foundation\helpers.php
\vendor\laravel\framework\src\Illuminate\Hashing\BcryptHasher.php
/**
* Hash the given value.
*
* @param string $value
* @param array $options
* @return string
*
* @throws \RuntimeException
*/
public function make($value, array $options = [])
{
$hash = password_hash($value, PASSWORD_BCRYPT, [
'cost' => $this->cost($options),
]);
if ($hash === false) {
throw new RuntimeException('Bcrypt hashing not supported.');
}
return $hash;
}
/**
* Check the given plain value against a hash.
*
* @param string $value
* @param string $hashedValue
* @param array $options
* @return bool
*/
public function check($value, $hashedValue, array $options = [])
{
if (strlen($hashedValue) === 0) {
return false;
}
return password_verify($value, $hashedValue);
}
在非laravel项目中的实际应用登录:
public function index(RequestInterface $request){
$username=$request->input('username');
$password=$request->input('password');
if(empty($username)||empty($password)){
return $this->jsons(404,"参数不能为空",[]);
}
$user=Db::table('admin_users')->where('username',$username)->first();
if(password_verify($password, $user->password)){
if($user->status!=1){
return $this->jsons(404,"该用户已被禁用",[]);
}
return $this->jsons(1,"查询成功",$user);
}else{
return $this->jsons(404,"查询失败",[]);
}
}