当我将资源路由 Package 到我的定制中间件时,我收到错误
我的中间件:
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
class Officer
{
/**
* 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 == 'title_officer') {
return $next($request);
}
// elseif (Auth::check() && Auth::user()->role == 'agent') {
// return redirect('/agent');
// }
// else {
// return redirect('/customer');
// }
}
}
使用中间件的资源路由:
Route::resource('new-order', 'BackendController')->middleware('officer');
我收到错误:
(尝试获取非对象的属性"header")。
- 如何修复**
6条答案
按热度按时间yqhsw0fo1#
在中间件中,处理所有情况并相应地返回重定向或中止是很重要的。
当您希望允许系统继续提前处理请求时,可以执行
return $next($request);
。但是,如果
if (Auth::check() && Auth::user()->role == 'title_officer')
条件失败,则您尚未提及系统应执行的操作。如果您不想显示该页面可用,您可以输入
abort(404)
,或者输入abort(403)
表示禁止访问。但请确保您没有添加会导致无限循环的case。请检查documentation以获取更多选项。
bnl4lu3b2#
只需在中间件中使用如下代码:如果已验证则重定向
osh3o9ms3#
我遇到了这个错误。在我的控制器中
第一个月
代替
return redirect()->route('dashboard')
这样就能修好了
rjee0c154#
尝试添加
else
块,当不满足if
条件时返回:yxyvkwin5#
检查中间件功能,你漏了下面一个--
所以添加这一行。
mzillmmw6#
晚了,但是..当数据库中的列为空时,这种情况发生在我身上。