我希望建立一个中间件来检查用户是否是他们所在页面的订户。我尝试了几个选项,但是都需要将URL传递给中间件。
路线
Route::get('premium/{id}', function ($id) {
return $id;
})->middleware('subscribe:{$id}');
中间件
public function handle($request, Closure $next, $subscribe)
{
//dd($subscribe);
$c = DB::table('suscribes')->where('user_id', $request->user()->id)->where('subscribed_to', $subscribe)->count();
return $next($request);
}
上面的$ subscribe显然返回了一个{$ id}字符串,但是已经尝试了串联。有没有更好的办法?
在使用Cashier和Stripe时,我还尝试为每个用户设置新计划。来自docs。
public function handle($request, Closure $next)
{
if ($request->user() && ! $request->user()->subscribed('main')) {
// This user is not a paying customer...
return redirect('billing');
}
return $next($request);
}
但是我仍然需要将变量传递给“ main”。
我不确定我是否完全了解您的要求。但是要获取某些请求路由参数的值,可以使用$ request-> route('param-identifyer')函数。将{$ id}作为参数传递给中间件是错误的方法。
public function handle($request, Closure $next, $subscribe)
{
dd($request->route('id'));
$c = DB::table('suscribes')->where('user_id', $request->user()->id)->where('subscribed_to', $subscribe)->count();
return $next($request);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句