【问题标题】:This page isn’t working localhost redirected you too many times. Try clearing your cookies. ERR_TOO_MANY_REDIRECTS此页面无法正常工作 localhost 将您重定向了太多次。尝试清除您的 cookie。 ERR_TOO_MANY_REDIRECTS
【发布时间】:2020-06-21 16:19:17
【问题描述】:

你好,我从昨天开始就一直在努力解决这个错误,我需要一些帮助 这是我的中间件,这是我的路线。 此页面无法正常工作 localhost 将您重定向了太多次。尝试清除您的 cookie。 ERR_TOO_MANY_REDIRECTS。

    public function handle($request, Closure $next)
    {
        if (Auth::check()) {
            $user = Auth::user();
            if ($user->hasAnyRole('school')) {
                return $next($request);
            }
        } else {
            return redirect('login'); 
        }
    }
Route::get('/', 'PagesController@index');
Route::get('/about', 'PagesController@about')->name('about');

Auth::routes();
Route::get('/school', 'HomeController@index')->name('school')->middleware('school');

甚至无法访问着陆页。提前致谢!

【问题讨论】:

  • 只是为了检测问题可以临时删除``` else { return redirect('login'); ``` 在中间件中检查是否还有这个问题
  • 我删除了它,然后我得到了这个错误调用 null 上的成员函数 send()
  • / 路由有效吗?
  • 不,我没有使用它/
  • 你必须检查哪个块导致你的重定向,使用dd()这个

标签: php laravel middleware


【解决方案1】:

你需要在hasAnyRole函数的else中再次重定向用户:

public function handle($request, Closure $next)
{
    if (Auth::check()) {
        $user = Auth::user();
        if ($user->hasAnyRole('school')) {
            return $next($request);
        } else {
            // HERE
            return redirect('login'); 
        }
    } else {
        return redirect('login'); 
    }
}

【讨论】:

  • 我再次尝试将它们重定向到其他中间件,但还是一样。 ``` if (!Auth::check()) { return redirect()->route('login'); } $user = Auth::user(); if($user->hasAnyRole('school')) { return $next($request); } $destinations = ['学生','老师']; foreach($destinations as $destination){ return redirect(route( $user->hasAnyrole($destination))); }```
【解决方案2】:

你必须这样使用

public function __construct(){
    public function handle($request, Closure $next)
        if (Auth::check()) {
            $user = Auth::user();
            if ($user->hasAnyRole('school')) {
                return $next($request);
            }
            else{
                // Another redirect
            }
        } else {
            return redirect()->route('login');
        }
    });
}

【讨论】:

  • 我确实使用过它,但它也不起作用。事实上,无论我在哪里重定向,我都会遇到同样的错误
  • 我试过了,我得到了这个。调用未定义的方法 App\Http\Middleware\School::middleware() @A.A
猜你喜欢
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 2020-01-03
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多