Call to a member function hasRole () on null?

file

file

如图,为什么打印出来的 \Auth::user() 是null ,所以会一直返回 false , 就是不能斤 horizon

每天3小时...加油
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 9
Jourdon

你确定你有登录用户吗?

5年前 评论

@Jourdon 有的 ,我在其他界面 使用
dd( \Auth::user() ); 打印是没问题的,但是在 AuthServiceProvider ->boot() 里面打印就出现了这个问题了,为null

5年前 评论
Jourdon

@surest 因为你打印的那个地方laravel的流程还没有走到auth,当然不存在登录用户,你试试把在Horizon::auth后面打印。

5年前 评论
Jourdon

@surest 有问题记得上图。

        \Horizon::auth(function ($request) {
            dd(\Auth::user());
            return \Auth::user()->hasRole('Founder');
        });
5年前 评论

@Jourdon

public function boot()
{
    $this->registerPolicies();
    \Horizon::auth( function ($request){
        // 是否是站长
        dd( \Auth::user() );  // 放在这个位置直接访问网页了,没有进行打印
        // return \Auth::user()->hasRole('Founder');
        return true;
    });

     // dd( \Auth::user() ); // // 放在这个位置 打印 null
}
5年前 评论
Jourdon

你还没有搞清楚这段代码是做什么的,

这段代段是在你访问horizon时会要判断用户是否为站长,如果是进入,如果否就报错。

所以你打印用户当然要在这个function里面,前提是你要访问horizon。

建议你把教程好好看一遍,这里,如果逻辑没有看懂,就算没出错,你照着敲一百遍也没用。
@surest

5年前 评论

@Jourdon 嗯嗯 我理解您的意思,谢谢哇。 可能是我某个其他地方代码出错了。逻辑的话我知道,主要是我都想测试试一试。 嗯,我再找找问题所有,到时候我自己重构一遍试试

5年前 评论
Jourdon

@surest 你还是没理解我的意思,你截图中打印的位置不对,所以会出错。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!