如何在 Laravel 5.5/5.6 中禁用登录 url 路径

How to disable login url path in Laravel 5.5/5.6

我知道如何在 web.php 中添加自定义登录路由,例如:

Route::get('login-whatever', [
  'as' => 'login-whatever',
  'uses' => 'Auth\LoginController@showLoginForm'
]);

并添加到 app/Exceptions/Handler.php

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated($request, AuthenticationException $exception)
{
    return $request->expectsJson()
        ? response()->json(['message' => $exception->getMessage()], 401)
        : redirect()->guest(route('login-whatever'));
}

但仍然允许通过 /login 路由登录

你为什么不捕获 /login 路由并进行永久重定向?

Route::match(['get', 'post'], 'login', function(){
    return redirect('/');
});

或者您可以明确说明控制器和您希望它执行的功能。

Route::get('login', 'YourController@doYourFuntion')->name('name');

如果这不起作用,请向我们提供您的完整路线代码,以便我们帮助解决问题。还要使用您尝试过的内容编辑问题,这样我们就不会花时间重复已经尝试过的方法。谢谢!

Laravel中的中间件class是负责认证的classes,

Illuminate\Auth\Middleware\Authenticate

是默认身份验证 class。您应该能够轻松覆盖它。

阅读 Laravel 的文档了解更多信息 https://laravel.com/docs/5.6/authentication

嗯,我不是 100% 确定你的意思,但 Auth::routes() 只是 /vendor/laravel/framework/src/Illuminate/Routing/Router.phpauth() 函数的快捷方式。如果您不想看到它们,可以将它们注释掉。不过,这可能不是最好的方法。您可以只覆盖 web.php

中的那些路线

有关详细信息,请参阅此 link:Overriding default auth routes