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

Php 如何在Laravel 5.5/5.6中禁用登录url路径,php,laravel,routes,laravel-5.5,laravel-5.6,Php,Laravel,Routes,Laravel 5.5,Laravel 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 unauthen

我知道如何在
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');

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

为什么不抓住/login路由并执行永久重定向

Route::match(['get', 'post'], 'login', function(){
    return redirect('/');
});
或者,您可以明确说明控制器以及希望它执行的功能

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

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

Laravel中的中间件类是负责身份验证的类

Illuminate\Auth\Middleware\Authenticate
是默认的身份验证类。您应该能够轻松地覆盖它


阅读Laravel的文档了解更多信息

Laravel中的中间件类是负责身份验证的类

Illuminate\Auth\Middleware\Authenticate
是默认的身份验证类。您应该能够轻松地覆盖它


阅读Laravel的文档了解更多信息,我不是100%确定你的意思,但是
Auth::routes()
只是
/vendor/Laravel/framework/src/light/Routing/Router.php
Auth()
函数的快捷方式。如果你不想看到它们,你可以把它们注释掉。不过,这可能不是最好的解决办法。您可以在
web.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'));
}

参考此链接了解更多信息:

嗯,我不是100%确定你的意思,但是
Auth::routes()
只是
/vendor/laravel/framework/src/illighte/Routing/Router.php
Auth()
函数的快捷方式。如果你不想看到它们,你可以把它们注释掉。不过,这可能不是最好的解决办法。您可以在
web.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'));
}

有关更多信息,请参阅此链接:

看起来问题比我想象的要严重。在路由文件中的任何位置都有
Route::auth()
吗?我尝试了这个
Route::group(['prefix'=>'somepath'],function(){Route::auth();})但也有同样的问题看起来问题比我想象的要严重在路由文件中的任何地方都有
Route::auth()
吗?我尝试了这个
Route::group(['prefix'=>'somepath'],function(){Route::auth();})但我也遇到了同样的问题。即使将
重定向301/login/404
添加到
.htaccess
中,也会不可预知地重定向两条路由,这意味着直接捕获laravel路由中的路由。我将编辑答案。我喜欢。。事实上,您只需按以下方式添加它,它就能工作:Auth::routes();路由::get('register',function(){return redirect('/');})->name('register');我试过了。即使将
重定向301/login/404
添加到
.htaccess
中,也会不可预知地重定向两条路由,这意味着直接捕获laravel路由中的路由。我将编辑答案。我喜欢。。事实上,您只需按以下方式添加它,它就能工作:Auth::routes();路由::get('register',function(){return redirect('/');})->name('register');