[英]Laravel cannot pass multiple middleware
最近,我创建了两种中间件,一种用于设备的用户,另一种用于高级用户,其具有较高的管理员权限。 这是我的中间件
角色设备中间件
<?php
namespace App\Http\Middleware;
use Closure;
class RoleDevice
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(Auth::check() && Auth::User()->role=='device'){
return $next($request);
}
return redirect()->route('login')->with('danger',"You don't have an access");
}
}
角色设备超级用户
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
use User;
class RoleSuper
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(Auth::check() && Auth::User()->role=='super'){
return $next($request);
}
return redirect()->route('login')->with('danger',"You don't have an access");
}
}
创建中间件之后,我将其放入路由中,一条路由可以访问两个中间件。 这是我的路线之一。
Route::get('/dashboard','DashboardController@index')->middleware(['rolesuper','roledevice'])->name('dashboard');
当我尝试登录到我的网站时,它返回
You don't have an access
这不会传递给中间件。
我希望我能收到以上任何评论! 谢谢。
中间件按照传递的顺序执行。 因此,如果第一个中间件返回的只是重定向响应-第二个中间件将不会执行。
您可以将两种中间件组合为一个,并通过可用角色作为中间件参数,或者为此仅创建一个中间件,以验证用户是否被授权。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.