我有一个中间件,它可以在不允许他访问路由的情况下限制对路由的访问。我把它添加到:kernel.php
protected $middleware = [ \App\Http\Middleware\MyMiddlware::class,]
public function handle($request, Closure $next)
{
$response = $next($request);
$currentRoute = $request->route()->getName();
$accessibleMenu = $this->menu->where('route_name', $currentRoute)->first();
dd('middleware');
if ($this->auth->check() && !is_null($accessibleMenu)) {
$userRole = $request->user()->role()->first()->id;
if (!is_null($userRole ) && $userRole ==1) {
return $response;
}
}
return Response::make(view('noPermission'), 404);
}
路线:
Route::get('menu/list','MenuController@index')->name('menu-list');
控制器功能::
public function index($parent_id = null)
{
dd('executed');
$menus = $this->menu->orderBy('id', 'DESC')->paginate(5000);
return view('menu.index', compact('menus'));
}
现在说真的:如果角色id为2,中间件应该返回404视图而不执行路由。但它打印执行字符串在屏幕上!
1.如果我删除或评论:
$response = $next($request);
它返回
Call to a member function getName() on null
如果我把路线登记移到
“网络”=
和评论:
$response = $next($request);
然后屏幕显示“中间件”,中间件工作
我的问题是,如果我使用它,为什么middlware允许函数执行
$response = $next($request);
在第一个手柄功能?为什么中间件不工作并返回null的getName()
如果我在protected$middleware = []
数组中使用?
Laravel说kernel.phpfor-protected$middleware = []: * 这些中间件在每次对应用程序的请求中运行。
为什么即使在我限制了访问权限后也允许这样做?
我读这篇文章有困难,但我认为您需要更改两行:
删除$response=$next($request)
更改
返回$response
到
返回$next($request)
我认为您想要更改这些行,因为
$next($request)
是完整的执行。
问题内容: 我有一个包含10个元素的div,这些元素将被逐个更新,延迟时间为2秒。下面是相同的代码 但是,当我运行它时,所有元素都会一起更新。该程序只是添加一个延迟添加一个开始,并且所有元素都一起更新(被标记)。如何制作代码来逐一标记元素? 问题答案: 您正在打破React的两个基本规则: 不要直接改变状态 如果根据现有状态更新状态,请使用回调形式,因为状态更新可能是异步的(无论如何,在您的示例中
你会得到一本电话簿,里面有人们的名字和电话号码。之后,你会得到一些人的名字作为查询。对于每个查询,打印该人的电话号码。 输入格式 第一行有一个整数,表示通讯录中的条目数。每个条目由两行组成:姓名和相应的电话号码。 在这些之后,将会有一些查询。每个查询将包含一个人的姓名。读取查询直到文件结束。 限制条件:一个人的姓名仅由小写英文字母组成,可能采用“名字姓氏”格式,也可能采用“名字”格式。每个电话号码
请帮我解决这个问题,谢谢
我正在尝试根据通用模板生成新的excel文件。我正在打开模板excel文件,编辑它并将其保存在新位置。要编写文件,我正在使用FileOutputStream,并且我在编写后关闭流以保存它。整个过程正常工作,但新创建的excel文件没有正确保存。我的模板文件为35kb,我新创建的excel文件仅显示30kb。当我打开新创建的excel文件时,我可以看到写入的数据,我需要保存并关闭它以反映正确的36k
我有一个SpringBoot控制器,如下所示