Laravel 5.4 back()方法重定向次数过多

Laravel 5.4 back()方法重定向次数过多,laravel,Laravel,当我使用back()helper方法时,浏览器显示的重定向太多。 我看到了很多解决方案,但没有一个提供明确的解决方案 这是我的密码 身份验证中间件包含 public function handle($request, Closure $next) { if(Auth::check()) { return $next($request); } return back(); } 在kernel.php上添加此中间件 protected $route

当我使用back()helper方法时,浏览器显示的重定向太多。 我看到了很多解决方案,但没有一个提供明确的解决方案

这是我的密码

身份验证中间件包含

public function handle($request, Closure $next)
{
    if(Auth::check()) 
    {
        return $next($request);
    }
    return back();
}
在kernel.php上添加此中间件

protected $routeMiddleware = [
           'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
           'auth.basic'=>\Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
           'bindings'=>\Illuminate\Routing\Middleware\SubstituteBindings::class,
           'can' => \Illuminate\Auth\Middleware\Authorize::class,
           'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
           'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
           'authenticate' => \App\Http\Middleware\AuthenticationMiddleware::class,
       ];
名为userController的控制器在构造函数中使用此中间件

public function __construct()
{
     $this->middleware('authenticate');
}
下面是routes.php

Route::get('/', 'PostsController@index');
Route::get('/cpanel','UsersController@dashboard');

Route::group(['prefix'=>'cpanel'],function() {

  Route::get('/settings','UsersController@settings');
  Route::post('/settings','UsersController@storeSettings');
  Route::get('/post/create',function() {
    return view('posts.newpost');
  })->name('createpost');
  Route::post('/post/create','PostsController@create');
  Route::get('/posts','PostsController@posts');
  Route::delete('/post/delete/{id}','PostsController@delete');

});
最后是postsController方法

public function index()
{
      $posts = Post::all();
      return view('index',['posts'=>$posts]);
}

但当我键入domain/cpanel时,它显示重定向的次数太多。我不明白为什么。

您的身份验证中间件在某些情况下会导致循环,比如以前没有访问过。相反,您可以更改
returnback()
返回重定向()->url('/')
或在\uu构造函数()中应用中间件时忽略某些方法


如果您忘记了,还有一个auth中间件。

如果您确实希望在某些情况下重定向,并防止从back方法多次重定向,则可以执行以下操作:

<?php
   if(request()->fullUrl() === redirect()->back()->getTargetUrl()){
      return redirect('/');
   }

   return redirect()->back();

粘贴的内容UsersController@dashboardauth中间件返回到/login,但我希望用户返回到以前的url。替换路由::get('/cpanel','UsersController@dashboard'); 要路由::get('/','UsersController@dashboard'); 然后将其移动到cpanel组前缀xbs中。如果您在browser example.com/cpanel中编写,当然您没有登录,您将出现循环情况,因为没有以前的URL可移动到。