Laravel5.5 前台用户登录密码改为 md5

针对前台注册登录的MD5加密方式,不影响其他后台等hash加密方式。

具体步骤如下

1.在app目录下,新建一个文件Libraries,在Libraries目录下新建一个MD5.php文件,里面代码如下:

<?php 

namespace App\Libraries; 

use Illuminate\Contracts\Hashing\Hasher; 

class MD5 implements Hasher 
{ 
    /** 
     * Hash the given value. 
     * 
     * @param string $value 
     * 
     * @return array  $options 
     * @return string 
     */ 
    public function make($value, array $options = []) 
    { 
        return md5($value); 
    } 

    /** 
     * 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(empty($hashedValue)){ 
            return true; 
        } 
        return $this->make($value) === $hashedValue; 
    } 

    /** 
     * Check if the given hash has been hashed using the given options. 
     * 
     * @param string $hashedValue 
     * @param array $options 
     * 
     * @return bool 
     */ 
    public function needsRehash($hashedValue, array $options = []) 
    { 
        return false; 
    } 
} 

2.在Providers文件下面新建一个文件 MD5ServiceProvider.php,里面代码如下:

<?php 

namespace App\Providers; 

use Illuminate\Auth\EloquentUserProvider; 
class MD5ServiceProvider extends EloquentUserProvider 
{ 

    //继承EloquentUserProvider类,调用父类的构造函数 
    public function __construct($hasher, $model) 
    { 
        parent::__construct($hasher, $model); 
    } 

    /** 
     * Bootstrap the application services. 
     * 
     * @return void 
     */ 
    public function boot() 
    { 
        // 
    } 

    /** 
     * Register the application services. 
     * 
     * @return void 
     */ 
    public function register() 
    { 
        // 
    } 
} 

3.在AuthServiceProvider.php文件里boot方法里添加如下代码

        Auth::provider('MD5', function ($app) { 
            $model = config('auth.providers.users.model'); 
            return new MD5ServiceProvider(new MD5, $model); 
        }); 

头部需要引用命名

use  App\Libraries\MD5; 
use Auth;  

4.修改config/auth.php里的providers,修改代码如下。

'providers' => [
        'users' => [
            'driver' => 'MD5',//'driver' => 'eloquent',//eloquent默认加密码方式
            'model' => App\User::class,
        ],
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],
        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

5.修改注册create

修改app/Http/Controllers/Auth/RegisterController.php里的create,修改代码如下

    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => md5($data['password']),
        ]);
    }

到此就修改完成了,这样注册登录都可以使用md5去加密验证。
转载,做了些优化处理增加了注册时加入MD5

本作品采用《CC 协议》,转载必须注明作者和本文链接
认真学习,努力工作。拼!命!玩!
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

如果用户表的用户名是user_name密码字段是user_psd 这个要怎么改?我按照你的步骤还是不行,不知道是不是字段名字不同导致

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!