在我的Laravel项目中,有两种类型的自定义中间件:
现在,我需要结合这两种中间件来检查例如导师是否已登录,并且还需要检查导师是否有权输入课程。
我的路由/web.php看起来像这样:
// check tutor authentication
Route::group('middleware' => ['auth:tutor']], function(){
// Display routes that are enabled for all tutors like /profile
// check if tutor has permission to enter class
Route::group(['middleware' => 'class.permission'], function(){
// Display class routes
});
});
不幸的是,我收到以下错误:Trying to get property 'headers' of non-object
路径:Project/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php
感谢您的帮助。
答案 0 :(得分:1)
这是我以前见过的一个常见错误,很可能您忘记了在其中一个中间件中返回,它需要返回$next
或引发异常。
public function handle($request, Closure $next)
{
...
return $next($request);
}
答案 1 :(得分:0)
以某种方式预配置的身份验证中间件是麻烦的制造者。因此,我创建了一个自定义AuthTutor中间件,并将其注册为auth.tutor在内核中以解决该问题。
中间件代码:
public function handle($request, Closure $next)
{
if (Auth::guard('tutor')->check()) {
return $next($request);
} else {
return redirect()->route('login.tutor');
}
}
路线代码:
Route::group('middleware' => ['auth.tutor']], function(){ ... }