经过身份验证的用户在laravel中间件中为null

凯泽恩

我试图阻止某些用户访问管理面板。我已经创建了一个中间件,其代码为RequireAdminRole。

public function handle($request, Closure $next, $guard = null)
{
    $user = Auth::user();

    dd($user);

    if (!$user) {
        return $next($request);
    }

    if (!$user->hasRole('Admin')) {
        // if your sessions are decoupled from the frontend
        // you can even logout the user like so:
        // auth()->logout();

        abort(403, 'Access denied');
    }

    return $next($request);
}

我已将其添加到kernel.php

'web' => [
        \App\Http\Middleware\RequireAdminRole::class,
        \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,
    ],

我的问题ID $ user具有空值,因此我无法获得用户权限。有谁能够帮助我?

最好的祝福。

杰克·罗伯逊

中间件的顺序很重要,按照定义的顺序执行中间件处理程序。这意味着您正在尝试StartSession在执行中间件之前从会话中检索经过身份验证的用户

因此,要解决您的问题,您应该将RequireAdminRole中间件移至数组的末尾,或者至少移至的定义之后StartSession

'web' => [
    // Other middleware definitions...
    \App\Http\Middleware\RequireAdminRole::class
],

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel:身份验证中间件中的多重防护

不使用身份验证中间件,如何通过令牌获取用户ID?

如何在laravel 5.3中在没有auth:api中间件的情况下对用户进行身份验证?

ASP.NET Core Facebook身份验证中间件用户图片

测试jsonwebtoken身份验证快速中间件

在子域中使用“身份验证”中间件

如何添加身份验证中间件JWT Django?

OWIN身份验证中间件:注销

nextjs路由中间件进行身份验证

Laravel 5中的身份验证中间件截获的表单提交

在laravel 5.4中为经过身份验证的用户创建全局变量

多种身份验证中间件

Nuxt身份验证与来宾和身份验证中间件在刷新时将经过身份验证的用户重定向到错误的页面

CakePHP身份验证中间件未调用

Laravel 7中间件-如何为某些视图/刀片文件的未经身份验证的用户/来宾创建分组的中间件

检查用户是否通过身份验证的中间件功能

Laravel 5.2的多重身份验证使用中间件

使用身份验证中间件安排路由

初始中间件身份验证后,Angular JS获取用户

存根是经过身份验证的,可编写中间件

从WebAPI定制中间件将用户设置为通过身份验证

Laravel 5.4 中的附加身份验证中间件

身份验证中间件 - 指示失败

Laravel:为社交身份验证创建中间件

Laravel 中间件将用户信息返回为 null

在 Laravel 5.4 模型中访问经过身份验证的用户

Laravel 中间件 - 跳过护照身份验证

用于身份验证的异步中间件的 Jest 测试

中间件 Firebase 身份验证说明