package-for-laravel / legacy-passwords
此包已被废弃且不再维护。未建议替代包。
工具集,用于将旧密码迁移到您当前的Laravel项目中
3.0.1
2019-09-01 00:38 UTC
Requires
- php: ^7.1
- laravel/framework: >=5.8
Requires (Dev)
- mockery/mockery: ^1.2
- phpunit/phpunit: ^7.5
- squizlabs/php_codesniffer: ^3.4
README
ARCHIVED: This project is archived and no longer maintained.
这是一个将您的应用程序中的旧密码迁移到标准Laravel安装的工具。当您正在将项目重写为Laravel,但又不想让用户重置密码时,这尤其有用。
安装
此项目需要Laravel 5.8+。
composer require package-for-laravel/legacy-passwords
然后,运行您的迁移(此包注册了一些)
artisan migrate
接下来,找到您的用户模型(此包配置为使用默认的users表设置 - 但您的用户模型的位置或名称无关紧要)并使用PackageForLaravel\LegacyPasswords\HasLegacyPassword特性。同时实现PackageForLaravel\LegacyPasswords\HasLegacyPasswordContract。
use PackageForLaravel\LegacyPasswords\HasLegacyPasswordContract;
use PackageForLaravel\LegacyPasswords\HasLegacyPassword;
class User extends Authenticatable implements HasLegacyPasswordContract
{
use HasLegacyPassword;
创建一个旧密码认证策略,实现PackageForLaravel\LegacyPasswords\LegacyPasswordAuthenticationStrategyContract
以下是一个示例;假设我们的旧系统是纯md5。
use PackageForLaravel\LegacyPasswords\LegacyPasswordAuthenticationStrategyContract; class MyLegacyPasswordAuthenticationStrategy implements LegacyPasswordAuthenticationStrategyContract { public function validateCredentials(Authenticatable $user, array $credentials): bool { $password = $credentials['password']; $hashed = md5($password); return $user->legacyPassword->data['md5'] === $hashed; } }
然后,将其绑定到Laravel中。例如,您可能需要在AuthServiceProvider中这样做
$this->app->bind(LegacyPasswordAuthenticationStrategyContract::class, function() {
return new MyLegacyPasswordAuthenticationStrategy();
});
记住,您可以在策略中注入需求,如果您需要的话。
最后,修改您的config/auth.php中的键providers.users.driver为laravel-legacy-passwords,这样我们就可以注入这个认证系统而不是标准的一个。
如何创建旧密码?很简单。像这样
$user = User::create(); // you created this with your legacy data
$user->legacyPassword()->create([
'data' => [
'md5' => $oldUser['md5']
]
]);
您可以在data键中包含您策略所需的任何内容。
致谢
此包由Aaron Saray创建和维护。