Laravel 8.83.4版本如何禁用register注册路由?
Laravel 8.83.4 禁用register注册路由方案
你找不到config/fortify.php是因为项目没有安装Laravel Fortify扩展包,所有修改Fortify配置的方案对你当前项目不适用,按以下步骤操作即可:
- 首先定位注册路由来源,执行命令:
php artisan route:list --name=register
根据返回的路由所属场景选择对应处理方式。
场景1:项目基于laravel/ui生成认证脚手架
正常情况下在routes/web.php中按如下写法即可关闭注册路由:
Auth::routes([ 'register' => false ]);
如果配置不生效,按以下顺序排查:
- 执行
php artisan route:clear清除路由缓存,绝大多数配置不生效都是旧缓存导致 - 检查项目中是否存在其他位置重复调用
Auth::routes()且未传入register => false参数,重复调用会覆盖之前的配置 - 检查路由文件中是否手动定义了
/register的GET、POST路由,手动定义的路由优先级更高
如果觉得参数控制不稳妥,可以直接不调用Auth::routes(),手动注册你需要的认证路由(登录、登出、密码重置等),从根源上避免注册路由生成。
场景2:项目基于Laravel Breeze生成认证脚手架
Breeze的认证路由默认全部写在routes/auth.php文件中,不受Auth::routes()参数控制,直接找到文件中注册相关的两行路由注释或删除即可:
// 注释以下两行即可移除注册功能入口 // Route::get('register', [RegisteredUserController::class, 'create'])->name('register'); // Route::post('register', [RegisteredUserController::class, 'store']);
修改完成后执行php artisan route:clear清除缓存即可生效。
场景3:项目安装了Fortify但未生成配置文件
如果执行路由列表命令发现注册路由是Fortify注册的,说明安装依赖时没有发布配置文件,执行以下命令即可生成config/fortify.php:
php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider"
生成配置文件后,找到features数组,注释掉注册相关的条目即可:
'features' => [ // Features::registration(), // 注释该行禁用注册 Features::resetPasswords(), Features::emailVerification(), Features::updateProfileInformation(), Features::updatePasswords(), Features::twoFactorAuthentication(), ],
内容的提问来源于stack exchange,提问作者Hlanga
相关产品推荐
相关产品推荐

