Laravel 用于订阅的中间件
Laravel middleware for subscription
我正在尝试在 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);
}
Problem is, I end up in a redirect loop.
看起来您正在整个应用程序(包括计费页面)中应用中间件。因此,您需要指定应考虑中间件 class 的位置,这可以在 /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);
我正在尝试在 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);
}
Problem is, I end up in a redirect loop.
看起来您正在整个应用程序(包括计费页面)中应用中间件。因此,您需要指定应考虑中间件 class 的位置,这可以在 /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);