我有一个像这样的控制器:
public function __construct()
{
$check = Auth::id();
if ($check->role == '5') {
// allow to run any other controller
} else {
// return view('home')
}
return $check;
}
public function index()
{
return view('admin.home');
}
我想要做的是,无论何时触发AdminController
,运行__construct
函数并检查role == 5
是否为public function handle($request, Closure $next)
{
if ($request->role == 2) {
} else {
return view('index');
}
return $next($request);
}
,如果是,则继续请求,否则返回视图。怎么办?
protected $middlewareGroups = [
'admin' => [
\App\Http\Middleware\CheckAdmin::class,
],
];
内核:
Route::group(['middleware' => ['admin']], function () {
路线:
Html.fromHtml(String.format(Locale.getDefault(), "<b>%s</b>", wrappedName))
错误::
(1/1)FatalThrowableError调用成员函数setCookie()on VerifyCsrfToken.php中的null(第156行)
答案 0 :(得分:3)
view()
会返回Illuminate\View\View
个对象,而不是Illuminate\Http\Response
。所以不是发送视图。将用户重定向到index
路径
试试这个
public function handle($request, Closure $next)
{
if ($request->role != 2) {
return return redirect()->route('index');
}
return $next($request);
}
答案 1 :(得分:-1)
Zayn Ali完美地解释了这一点,但如果你不想弄脏你的手,那么
我建议你使用委托包。
它是一个非常高效和高级的角色权限管理器。