代码之家  ›  专栏  ›  技术社区  ›  M'Baku

Laravel 5.6中的多个重定向

  •  0
  • M'Baku  · 技术社区  · 6 年前

    在创建中间件之后,我在我的laravel应用程序中得到了多个重定向,肯定有一些地方我做错了,但是 我不知道在哪里。

    public function handle($request, Closure $next)
    {
        $route = Route::currentRouteName();
    
        if($route!= "dashboard" || $route != "verify.again")
        {
    
            if(! is_null($request->user()) && ! $request->user()->verified) {
                return redirect()->route("verify.again");
            }
            elseif(!$request->user()->mobile){
                return redirect()->route("verify.again");
            }
             else{
                 return $next($request);
            }
    
    
        }
    
    
        return $next($request);
    }
    

    控制器

    public function index(){
    
        $user = Auth::user();
        if(!$user->verified)
        {
            return view("dashboard.verification.index", ["verify"=>"email", ]);
        }
        elseif(!$user->mobile)
        {
            return view("dashboard.verification.index", ["verify"=>"mobile", ]);
        }
    
        return view("dashboard.usermaster");
    
    }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Namoshek    6 年前

    你的 if 声明永远是 true 对于 verify.again 路线,因为 "verify.again" 总是不同于 "dashboard" .这将导致无休止地循环重定向到同一路由和中间件。所以解决方法可能是替换或 || 有一个和 && :

    if($route != "dashboard" && $route != "verify.again") {
        // your code here...
    }