网站建设与开发的论文,网站开发工作怎样,学ui+wordpress模板,微网站平台怎样做网站Laravel 系统版本查看及artisan管理员密码找回方法针对各个版本通用方法及原理-优雅草卓伊凡一、查看 Laravel 版本的方法优雅草蜻蜓T会议系统专业版 最近又有客户要了#xff0c;但是发现 密码不对 管理员账户密码不对#xff0c;卓伊凡必须处理下#xff0c;这里顺便讲解密…Laravel 系统版本查看及artisan管理员密码找回方法针对各个版本通用方法及原理-优雅草卓伊凡一、查看 Laravel 版本的方法优雅草蜻蜓T会议系统专业版 最近又有客户要了但是发现 密码不对 管理员账户密码不对卓伊凡必须处理下这里顺便讲解密码原理1. 通过命令行查看最准确
php artisan --version
# 示例输出Laravel Framework 10.10.0我输出 版本 又遇到 问题了不过已经解决Laravel Framework 8.83.27
我们的版本是8其实确实算比较新了2. 通过 composer.json 文件查看
cat composer.json | grep laravel/framework
# 示例输出laravel/framework: ^10.0看了看composer.json
没问题 首任主程 写的很好没问题 除了版本没写 其他依赖都有 能看到 也利于维护3. 通过 PHP 代码查看
// 在路由或控制器中添加
Route::get(/version, function() {return app()-version();
});
// 访问 /version 即可看到二、不同 Laravel 版本找回 admin 密码的方法通用方法适用于所有版本方法1使用 Tinker 重置密码
php artisan tinker# 在 tinker 中执行
$user App\Models\User::where(email, adminexample.com)-first();
$user-password Hash::make(new_password);
$user-save();不过这里要改改 我们字段是username 然后是admin$user App\Models\User::where(‘username’, ‘admin’)-first();
$user-password Hash::make(‘密码’);
$user-save();因此应该这样执行这里脱敏我写的密码提示我是未知字段失败了方法2数据库直接更新
UPDATE users SET password $2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi WHERE email adminexample.com;
# 上面密码对应明文是 password这个方法 应该可行性高一些版本特定方法Laravel 5.x - 7.x
php artisan make:command ResetAdminPassword然后在生成的命令文件中
public function handle()
{$user User::where(email, adminexample.com)-first();$user-password bcrypt(new_password);$user-save();$this-info(Password reset successfully!);
}Laravel 8.x 及以上
php artisan make:command ResetAdminPassword命令文件内容
public function handle()
{$user \App\Models\User::where(email, adminexample.com)-first();$user-forceFill([password \Illuminate\Support\Facades\Hash::make(new_password)])-save();$this-info(Password reset successfully!);
}刚刚我们已经看过我们的版本是8了 所以我们用这个方法应该才是最可靠的根据情况 我们创建应该是在 Laravel 项目中使用 php artisan make:command ResetAdminPassword 生成的命令文件默认会存放在以下路径标准路径
app/Console/Commands/ResetAdminPassword.php详细说明文件完整路径结构
your-project/├── app/│ ├── Console/│ │ ├── Commands/│ │ │ └── ResetAdminPassword.php ← 这就是生成的文件│ │ └── Kernel.php文件内容示例生成的 ResetAdminPassword.php 会包含类似这样的基础结构
?phpnamespace App\Console\Commands;use Illuminate\Console\Command;class ResetAdminPassword extends Command
{protected $signature command:name;protected $description Command description;public function __construct(){parent::__construct();}public function handle(){// 命令逻辑代码}
}如何验证文件是否存在命令行方式
ls app/Console/Commands/ResetAdminPassword.php或使用PHP检查
php -r echo file_exists(app/Console/Commands/ResetAdminPassword.php) ? 存在 : 不存在;如果找不到文件检查是否在项目根目录执行命令运行 composer dump-autoload 重新生成自动加载检查 app/Console/Commands/ 目录是否存在注册命令生成后需要在 app/Console/Kernel.php 的 $commands 数组中添加
protected $commands [Commands\ResetAdminPassword::class,
];使用命令注册后可以通过以下方式执行
php artisan list # 查看可用命令
php artisan your:command-name # 执行你的命令提示如果你自定义了 Laravel 的目录结构文件可能会出现在你配置的对应路径中可以通过检查 composer.json 的 autoload.psr-4 配置确认实际路径。我们打开查看到原始内容修改成我们的内容public function handle()
{
$user \App\Models\User::where(‘username’, ‘admin’)-first();
$user-forceFill([
‘password’ \Illuminate\Support\Facades\Hash::make(‘123456’)
])-save();
$this-info(‘Password reset successfully!’);
}默认改123456验证命令签名打开 ResetAdminPassword.php 文件检查 $signatureprotected $signature ‘admin:reset-password’;注册命令在 app/Console/Kernel.php 中添加那么我执行命令为
php artisan admin:reset-password这样就可以重置密码完整重置密码nice卓伊凡使用 Laravel Breeze/Jetstream 的情况Laravel 8 使用 Jetstream
php artisan tinker
$user \App\Models\User::where(email, adminexample.com)-first();
$user-forceFill([password \Illuminate\Support\Facades\Hash::make(new_password)])-save();Laravel 8 使用 Sanctum
php artisan tinker
$user \App\Models\User::find(1);
$user-password \Illuminate\Support\Facades\Hash::make(new_password);
$user-save();三、预防措施创建密码重置命令
php artisan make:command ResetPasswordCommand添加管理员种子用户
// 在 DatabaseSeeder.php
User::create([name Admin,email adminexample.com,password Hash::make(temp_password),is_admin true
]);设置密码过期策略Laravel 8
// 在 AppServiceProvider.php
\Illuminate\Auth\Passwords\PasswordBrokerManager::macro(setDefaultPasswordTimeout, function($timeout) {config([auth.passwords.users.expire $timeout]);
});四、安全建议重置后立即修改临时密码使用强密码生成器
use Illuminate\Support\Str;
$password Str::password(12); // Laravel 9考虑使用双重认证定期轮换管理员密码以上方法覆盖了从 Laravel 5.x 到最新版本的管理员密码找回需求整体来说 laravel 真的 很安全的了