laravel 5中间件的条件总是错误的

YVS*_*102 9 php laravel laravel-5 laravel-middleware laravel-5.4

我试图在我的条件下给予条件Middleware.

这是我的剧本

if (auth()->check() && auth()->user()->type == 'TP001') {
    $menu->add("User Control",array('nickname' => "user",'class'=>'treeview'))
    ->append(' <b class="caret"></b>')
    ->prepend('<span class="glyphicon glyphicon-user"></span> ');

    $menu->user->add('Daftar User','user/list');
    $menu->user->add('Tipe User','user/type');
} else {
    /* Some code here...*/
}
Run Code Online (Sandbox Code Playgroud)

上面的脚本我不能看到带有条件的菜单,即使我已经登录'TP001'(总是在其他地方),然后我尝试修复我的代码

auth()->user()->isDeveloper()
Run Code Online (Sandbox Code Playgroud)

我的模特

public function isDeveloper()
{
    return ($this->type == 'TP001');
}
Run Code Online (Sandbox Code Playgroud)

但仍然没有工作,有没有办法给出上述条件但是以正确的方式?提前谢谢,抱歉我的英语不好.

我的核心

  protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        \App\Http\Middleware\Frontend::class,
  ];
Run Code Online (Sandbox Code Playgroud)

ale*_*ino 13

$middleware您发布的中间件内核,其中包含在每个请求中运行的中间件,但它们在路由中间件(您在路由定义中选择)之前运行.

您可能正在使用"Web"中间件组.尝试在最后添加自定义中间件.我认为Laravel 5.4的默认值是:

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        // \Illuminate\Session\Middleware\AuthenticateSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
        \App\Http\Middleware\Frontend::class, // <-- your middleware at the end
    ],
    'api' => [
        'throttle:60,1',
        'bindings',
    ],
];
Run Code Online (Sandbox Code Playgroud)

这样您就知道您的中间件将在其他中间件之后运行(启动会话并检查身份验证的中间件)