2

我正在尝试在 Laravel 5 中编写中间件,以检查用户是否有订阅,并且它没有被取消。如果它不存在或被取消,那么它们将被锁定在一页(计费)。问题是,我最终进入了重定向循环。我明白为什么,但我就是不知道该怎么做才是正确的。提前致谢

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


    if (\Auth::check()) 
    {
        // if subscription does not exist
        if (\Auth::user()->hospital->subscription == null || \Auth::user()->hospital->subscription !== 'Active') {
           return redirect('billing');
        }

    }
    return $next($request);
}
4

1 回答 1

1

问题是,我最终进入了重定向循环。

看起来您正在整个应用程序中应用中间件,包括计费页面。因此,您需要指定应该考虑中间件类的位置,这可以在/app/Http/kernel.php.

此外,您可以考虑在中间件类中进行额外的验证,例如:

// billing (http://example.com/billing)
$path = $request->path();

if ($path !== 'billing')
{

    if (\Auth::check()) 
    {
        // if subscription does not exist
        if (\Auth::user()->hospital->subscription == null || \Auth::user()->hospital->subscription !== 'Active') {
           return redirect('billing');
        }

    }
}
return $next($request);
于 2015-05-02T04:50:48.950 回答