【问题标题】:How to uninstall Laravel Passport如何卸载 Laravel Passport
【发布时间】:2018-05-14 00:22:58
【问题描述】:

我决定使用 JWT 并从项目中完全删除 Laravel Passport。

我试图从composer remove laravel/passport 开始。但是,它没有好处:

  [Symfony\Component\Debug\Exception\FatalThrowableError]
  Class 'Laravel\Passport\Passport' not found


Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1

Removal failed, reverting ./composer.json to its original content.

什么是正确且安全的移除程序?

【问题讨论】:

    标签: laravel composer-php


    【解决方案1】:

    使用 Laravel 7,我是这样做的:

    第 1 步。 在文件 app/Providers/AuthServiceProvider.php 中,删除这两行:

    use Laravel\Passport\Passport;
    
    Passport::routes();
    

    第 2 步。

    $ composer remove laravel/passport
    $ rm -r ./resources/js/components/passport # if any
    $ rm -r ./resources/views/vendor/passport # if any
    

    第 3 步。 在文件 resources/js/app.js 中,删除护照组件注册。如果您在某处使用过这些已注册的组件,您也可以找到并删除它:

    $ grep -rn 'passport-authorized-clients'     resources/js/*
    $ grep -rn 'passport-personal-access-tokens' resources/js/*
    $ grep -rn 'passport-clients'                resources/js/*
    

    第 4 步。 从您的模型中查找并删除 HasApiTokens

    $ grep -rn HasApiTokens * 
    

    同时删除与之相关的导入行:

    use Laravel\Passport\HasApiTokens;
    

    第 5 步。 删除 oauth

    $ rm storage/oauth-*.key
    

    第 6 步。在文件 config/auth.php 中,查找 guards:api:driver 并将 passport 还原为 token

    第 7 步。 删除 Passport 表并清理迁移表

    $ php artisan tinker
    >>> Schema::drop('oauth_access_tokens');
    >>> Schema::drop('oauth_auth_codes');
    >>> Schema::drop('oauth_clients');
    >>> Schema::drop('oauth_personal_access_clients');
    >>> Schema::drop('oauth_refresh_tokens');
    >>> DB::table('migrations')->where('migration', 'like', '%_oauth_access_tokens_table')->delete();
    >>> DB::table('migrations')->where('migration', 'like', '%_oauth_auth_codes_table')->delete();
    >>> DB::table('migrations')->where('migration', 'like', '%_oauth_clients_table')->delete();
    >>> DB::table('migrations')->where('migration', 'like', '%_oauth_personal_access_clients_table')->delete();
    >>> DB::table('migrations')->where('migration', 'like', '%_oauth_refresh_tokens_table')->delete();
    >>> exit
    

    第 8 步。最后,刷新您的安装:

    $ composer dump-autoload
    $ php artisan optimize:clear
    $ npm run dev
    

    【讨论】:

    • 如果其他开发人员正在使用相同的代码库或者这已经在暂存/生产中,最好创建一个迁移以删除表。
    【解决方案2】:

    按照保罗的步骤。删除数据库迁移表中的 Passport Migrations 并运行命令artisan migrate:refresh

    【讨论】:

    • 将此作为评论添加到保罗的回答下
    【解决方案3】:

    您可以通过在composer.json 文件中手动删除此行"laravel/passport": "^4.0" 然后运行composer update 来删除护照。

    如果您运行的是 Laravel 5.4 或更低版本,请确保在您的 app.config 文件 Laravel\Passport\PassportServiceProvider::class 中删除此行

    所有依赖护照的课程也必须进行编辑。最常见的类是:

    1. User 模型,删除 HasApiToken 特征。
    2. AuthServiceProvider,在你的引导方法中移除 Passport::routes();
    3. 您的config/auth.php,更改api 身份验证的驱动程序选项

    【讨论】:

    • php artisan migrate:refresh 在步骤结束时运行。删除数据库迁移表中的 Passport Migrations。但请小心你在生产中。
    • 与其手动从 composer.json 中删除,我更喜欢:composer remove laravel/passport
    猜你喜欢
    • 1970-01-01
    • 2017-03-09
    • 2020-01-27
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 2021-06-08
    相关资源
    最近更新 更多