flarum 修改MD5登录加密方式
时间: 2023-08-11 11:30:12 浏览: 208
如何更改或更新使用MD5保存的密码?
如果你想在Flarum中使用MD5加密方式进行用户密码的加密,可以按照以下步骤进行操作:
1. 修改配置文件
在Flarum的根目录下找到config.php文件,添加以下内容:
```php
return [
// ...
'hashers' => [
// ...
'myhasher' => [
'algo' => 'md5',
'prefix' => '', // 如果需要添加前缀,可以在这里设置
'suffix' => '', // 如果需要添加后缀,可以在这里设置
],
],
];
```
2. 创建自定义加密方式
在Flarum的扩展目录下创建一个新文件夹,比如叫做myhasher,然后在该文件夹下创建一个新的类MyHasher.php,类的代码如下:
```php
namespace MyHasher;
use Illuminate\Contracts\Hashing\Hasher as HasherContract;
class MyHasher implements HasherContract
{
public function make($value, array $options = [])
{
$prefix = $options['prefix'] ?? '';
$suffix = $options['suffix'] ?? '';
return md5($prefix . $value . $suffix);
}
public function check($value, $hashedValue, array $options = [])
{
$prefix = $options['prefix'] ?? '';
$suffix = $options['suffix'] ?? '';
return md5($prefix . $value . $suffix) === $hashedValue;
}
public function needsRehash($hashedValue, array $options = [])
{
return false; // 如果需要重新hash,返回true
}
}
```
其中,make()方法用于加密密码,check()方法用于验证密码是否正确,needsRehash()方法用于判断是否需要重新hash。
3. 注册自定义加密方式
在Flarum的扩展目录下的extend.php文件中添加以下代码:
```php
use Illuminate\Events\Dispatcher;
use MyHasher\MyHasher;
return function (Dispatcher $events) {
$events->listen('Illuminate\Auth\Events\Attempting', function ($event) {
$event->credentials['password'] = app(MyHasher::class)->make($event->credentials['password'], [
'prefix' => 'your_prefix', // 自定义的前缀
'suffix' => 'your_suffix', // 自定义的后缀
]);
});
$events->listen('Illuminate\Auth\Events\PasswordReset', function ($event) {
// 更多的事件监听可以在这里添加
});
};
$app->singleton(MyHasher::class, function () {
return new MyHasher();
});
$app->register(MyHasher\MyHasherProvider::class);
```
注册完成后,可以在Flarum的管理后台中进行测试。需要注意的是,MD5加密方式并不安全,建议使用更加安全的加密方式。
阅读全文