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 协议》,转载必须注明作者和本文链接
推荐文章: