laravel-admin加密方式

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,"查询失败",[]);
        }
        
    }

0 评论
内联反馈
查看所有评论