如何卸载 Laravel Passport
Posted
技术标签:
【中文标题】如何卸载 Laravel Passport【英文标题】:How to uninstall 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.
什么是正确且安全的移除程序?
【问题讨论】:
【参考方案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
中删除此行
所有依赖护照的课程也必须进行编辑。最常见的类是:
User
模型,删除 HasApiToken
特征。
AuthServiceProvider
,在你的引导方法中移除 Passport::routes();
。
您的config/auth.php
,更改api
身份验证的驱动程序选项
【讨论】:
php artisan migrate:refresh
在步骤结束时运行。删除数据库迁移表中的 Passport Migrations。但请小心你在生产中。
与其手动从 composer.json 中删除,我更喜欢:composer remove laravel/passport以上是关于如何卸载 Laravel Passport的主要内容,如果未能解决你的问题,请参考以下文章
如何将自定义数据添加到 Laravel Passport API 令牌?
如何使用 Laravel Passport 组织这样的路由保护?
如何使用 Laravel Passport (5.3) 记录身份验证尝试