页面无法正确重定向Laravel 5.6

时间:2018-07-24 11:53:45

标签: laravel-5.6

  

kernel.php

    protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'adminauth' => \App\Http\Middleware\AdminAuth::class,
    ];
  

web.php

Route::group(['middleware' => 'adminauth'], function() {

        //route for admin dashboard
        Route::get('/admin', [
                'uses' => 'AdminController@dashboard',
                'as' => 'dashboard'
        ]);

        //route for admin setting
        Route::get('/admin/setting', [
                'uses' => 'AdminController@setting'
        ]);
});
  

AdminAuth.php

public function handle($request, Closure $next)
    {

        return redirect('/admin/setting');
        //return $next($request);
    }
  

AdminController.php

public function setting() {
      $admin = $this->admin;
      $notification = $this->notification;

      return view('admin/setting')->with(compact(
        'admin',
        'notification'
      ));
    }

我遇到了此问题,即 页面无法正确重定向 Firefox已检测到服务器正在以永远无法完成的方式重定向对该地址的请求。     有时可能是由于禁用或拒绝接受Cookie引起的。

我阅读了这些帖子link1link2link3,但是没有什么可以解决我的问题。

1 个答案:

答案 0 :(得分:0)

问题是您的admin/setting路由使用了adminauth中间件,但是如果您的adminauth中间件没有通过,则会重定向到admin/setting

仅提供说明性内容:

重定向响应是代码在300-399之间的响应,这些响应被发送到浏览器,告诉浏览器下一步该做什么。默认情况下,浏览器将遵循重定向并向该位置创建新请求。

在您的情况下,浏览器创建对admin/setting中间件的请求失败,并告诉浏览器重定向到admin/setting,这将再次执行完全相同的操作。 Firefox之类的浏览器具有内置的机制来检测此情况,而不是向服务器发送大量请求,只会停止此循环,并让用户知道存在问题。

要解决此问题,您需要重定向到其他地方,或者将/admin/settingadminauth中间件中排除。

解决方案将取决于您的应用程序。


关于为什么的更多详细信息Firefox正确选择了停止重定向:

根据section 9.1.2 of the HTTP/1.1 protocol,GET请求是幂等的,即

  

N个> 0个相同请求的副作用与单个请求相同

这是假设浏览器用来声明,由于对X的请求导致重定向到相同的X,因此这是无限重定向,应该停止。