Laravel 5.4禁用注册路由

Dev*_*Wol 38 php laravel laravel-5.4

我试图在Laravel 5.4中运行的应用程序上禁用注册路由.

在我的路线文件中,我只有

Auth::routes();
Run Code Online (Sandbox Code Playgroud)

有没有办法禁用寄存器路由?

dpa*_*oli 71

代码:

Auth::routes();
Run Code Online (Sandbox Code Playgroud)

这是一系列路线的缩影:

// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

// Registration Routes...
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'Auth\RegisterController@register');

// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');
Run Code Online (Sandbox Code Playgroud)

因此,您可以将第一个替换为路由列表,并注释掉您在应用程序中不需要的任何路由.

  • @Haritsinh。问题是关于 laravel 版本 **5.4**。在 **5.4** 版本中,`Auth::routes()` 函数不接受任何参数,仅在较新的版本中引入。 (2认同)

小智 32

从Laravel 5.0开始,您可以通过选项传递和数组

Auth::routes(['register' => false]);
Run Code Online (Sandbox Code Playgroud)

您可以查看代码Illuminate\Routing\Router @ auth

  • 应该认为这是一个完美的答案,因为这是忽略寄存器路由的正确方法,并且可以与Laravel 5.8一起使用。 (2认同)

小智 21

你可以试试这个.

Route::match(['get', 'post'], 'register', function(){
    return redirect('/');
});
Run Code Online (Sandbox Code Playgroud)

在其下方添加这些路由Auth::routes()以覆盖默认注册路由.对/register路由的任何请求都将重定向到baseUrl.


小智 7

这看起来容易!您只需要在app/Http/Controllers/Auth/RegisterController.php类中重写两个方法.请参阅下面的内容,以防止显示表单,最重要的是阻止直接POST请求到您的应用程序进行注册.

/**
 * Show the application registration form.
 *
 * @return \Illuminate\Http\Response
 */
public function showRegistrationForm()
{
    return redirect('login');
}

/**
 * Handle a registration request for the application.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function register(Request $request)
{
    abort(404);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

在web.php中,替换

Auth::routes();

Auth::routes(['register' => false]);

这样您就可以从默认身份验证路由列表中删除注册路由。我尝试在5.7,它工作正常。