laravel中如何对中间件进行或运算
How to make an OR operation for middleware in laravel
Laravel 5.7
PHP 7.2.10
比如我的路线是
Route::middleware('auth', 'emailVerified', 'phoneVerified', 'flatTenant|flatResident|flatMember')->get('apartments/{apartment}/flats/{flat}/guests/{guest}', 'Api\GuestController@show')->name('Api.guests.show');
我希望它像 flatTenant、flatResident 和 flatMember 中的任何一个一样工作,这应该允许请求,实现此目的的最佳方法是什么?
您不需要在路由内进行或操作。相反,您可以进行自己的身份验证,这将检查当前用户是否是 flatTenant、flatResident 和 flatMember 中的任何一个。
例如你可以注册一个名为'flatChecker'的中间件。
然后在那个中间件中你的代码可以是这样的,
public function handle($request, Closure $next)
{
if (Auth::user()->isFlatTenant || Auth::user()->isFlatResident || Auth::user()->isFlatMember) //put your own condition to check here
{
return $next($request);
}
return redirect('/home'); //if they are not, then redirect them to somewhere else
}
有关中间件的更多信息,请查看此 documentation。
Laravel 5.7
PHP 7.2.10
比如我的路线是
Route::middleware('auth', 'emailVerified', 'phoneVerified', 'flatTenant|flatResident|flatMember')->get('apartments/{apartment}/flats/{flat}/guests/{guest}', 'Api\GuestController@show')->name('Api.guests.show');
我希望它像 flatTenant、flatResident 和 flatMember 中的任何一个一样工作,这应该允许请求,实现此目的的最佳方法是什么?
您不需要在路由内进行或操作。相反,您可以进行自己的身份验证,这将检查当前用户是否是 flatTenant、flatResident 和 flatMember 中的任何一个。
例如你可以注册一个名为'flatChecker'的中间件。
然后在那个中间件中你的代码可以是这样的,
public function handle($request, Closure $next)
{
if (Auth::user()->isFlatTenant || Auth::user()->isFlatResident || Auth::user()->isFlatMember) //put your own condition to check here
{
return $next($request);
}
return redirect('/home'); //if they are not, then redirect them to somewhere else
}
有关中间件的更多信息,请查看此 documentation。