Laravel 系统版本查看及artisan管理员密码找回方法针对各个版本通用方法及原理-优雅草卓伊凡

简介: Laravel 系统版本查看及artisan管理员密码找回方法针对各个版本通用方法及原理-优雅草卓伊凡

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', 'admin@example.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 = 'admin@example.com';
# 上面密码对应明文是 "password"

这个方法 应该可行性高一些,

版本特定方法

Laravel 5.x - 7.x

php artisan make:command ResetAdminPassword

然后在生成的命令文件中:

public function handle()
{
    $user = User::where('email', 'admin@example.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', 'admin@example.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

详细说明

  1. 文件完整路径结构
your-project/
  ├── app/
  │   ├── Console/
  │   │   ├── Commands/
  │   │   │   └── ResetAdminPassword.php  ← 这就是生成的文件
  │   │   └── Kernel.php
  1. 文件内容示例
    生成的 ResetAdminPassword.php 会包含类似这样的基础结构:
<?php
namespace 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()
    {
        // 命令逻辑代码
    }
}
  1. 如何验证文件是否存在
  • 命令行方式:
ls app/Console/Commands/ResetAdminPassword.php
  • 或使用PHP检查:
php -r "echo file_exists('app/Console/Commands/ResetAdminPassword.php') ? '存在' : '不存在';"
  1. 如果找不到文件
  • 检查是否在项目根目录执行命令
  • 运行 composer dump-autoload 重新生成自动加载
  • 检查 app/Console/Commands/ 目录是否存在
  1. 注册命令
    生成后需要在 app/Console/Kernel.php $commands 数组中添加:
protected $commands = [
    Commands\ResetAdminPassword::class,
];
  1. 使用命令
    注册后可以通过以下方式执行:
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 文件,检查 $signature

protected $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', 'admin@example.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();

三、预防措施

  1. 创建密码重置命令
php artisan make:command ResetPasswordCommand
  1. 添加管理员种子用户
// 在 DatabaseSeeder.php
User::create([
 'name' => 'Admin',
 'email' => 'admin@example.com',
 'password' => Hash::make('temp_password'),
 'is_admin' => true
]);
  1. 设置密码过期策略(Laravel 8+):
// 在 AppServiceProvider.php
\Illuminate\Auth\Passwords\PasswordBrokerManager::macro('setDefaultPasswordTimeout', function($timeout) {
 config(['auth.passwords.users.expire' => $timeout]);
});

四、安全建议

  1. 重置后立即修改临时密码
  2. 使用强密码生成器:
use Illuminate\Support\Str;
$password = Str::password(12); // Laravel 9+
  1. 考虑使用双重认证
  2. 定期轮换管理员密码

以上方法覆盖了从 Laravel 5.x 到最新版本的管理员密码找回需求

整体来说 laravel 真的 很安全的了

目录
相关文章
|
2月前
|
缓存 网络安全 PHP
解决 Laravel PHP Warning: PHP Startup: Unable to load dynamic library ‘zip.so’ 报错问题以及关于php版本混淆问题-深度详解优雅草卓伊凡
解决 Laravel PHP Warning: PHP Startup: Unable to load dynamic library ‘zip.so’ 报错问题以及关于php版本混淆问题-深度详解优雅草卓伊凡
84 6
|
20天前
|
JavaScript 前端开发 Java
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
192 72
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
|
2月前
|
Web App开发 编解码 网络协议
直播推流技术底层逻辑详解与私有化实现方案-以rmtp rtc hls为例-优雅草卓伊凡
直播推流技术底层逻辑详解与私有化实现方案-以rmtp rtc hls为例-优雅草卓伊凡
160 5
直播推流技术底层逻辑详解与私有化实现方案-以rmtp rtc hls为例-优雅草卓伊凡
|
2月前
|
缓存 iOS开发 MacOS
uniapp发布快应用失败报错Error: ENOENT: no such file or directory以及hap-chimera-toolkit问题优雅草卓伊凡
uniapp发布快应用失败报错Error: ENOENT: no such file or directory以及hap-chimera-toolkit问题优雅草卓伊凡
245 2
uniapp发布快应用失败报错Error: ENOENT: no such file or directory以及hap-chimera-toolkit问题优雅草卓伊凡
|
19天前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
156 0
|
2月前
|
存储 安全 算法
FastAdmin框架超级管理员密码重置与常规admin安全机制解析-卓伊凡|大东家
FastAdmin框架超级管理员密码重置与常规admin安全机制解析-卓伊凡|大东家
153 7
|
2月前
|
存储 NoSQL MongoDB
Too many open files报错以及WiredTiger 存储引擎与 MongoDB 的关系及原理详解-以及早期的MMAPv1详解-卓伊凡|阿肯|糖果|贝贝|莉莉
Too many open files报错以及WiredTiger 存储引擎与 MongoDB 的关系及原理详解-以及早期的MMAPv1详解-卓伊凡|阿肯|糖果|贝贝|莉莉
140 0
Too many open files报错以及WiredTiger 存储引擎与 MongoDB 的关系及原理详解-以及早期的MMAPv1详解-卓伊凡|阿肯|糖果|贝贝|莉莉
|
2月前
|
机器学习/深度学习 安全 API
通过UID非法获取手机号的违法行为与技术逻辑剖析别异想天开了-优雅草卓伊凡
通过UID非法获取手机号的违法行为与技术逻辑剖析别异想天开了-优雅草卓伊凡
388 0
通过UID非法获取手机号的违法行为与技术逻辑剖析别异想天开了-优雅草卓伊凡
|
2月前
|
NoSQL Linux Apache
2025年10大主流开源协议全解析与开源战略的商业价值-优雅草卓伊凡
2025年10大主流开源协议全解析与开源战略的商业价值-优雅草卓伊凡
536 8
|
2月前
|
NoSQL 程序员 API
解决 PHP PHP Startup: Unable to load dynamic library ‘ixed.8.0.lin’以及PHP版本的问题-优雅草卓伊凡
解决 PHP PHP Startup: Unable to load dynamic library ‘ixed.8.0.lin’以及PHP版本的问题-优雅草卓伊凡
83 5
解决 PHP PHP Startup: Unable to load dynamic library ‘ixed.8.0.lin’以及PHP版本的问题-优雅草卓伊凡