拉拉维尔 | Auth::user()->id 在 AppServiceProvider 中不起作用

Posted

技术标签:

【中文标题】拉拉维尔 | Auth::user()->id 在 AppServiceProvider 中不起作用【英文标题】:Laravel | Auth::user()->id isn't working in AppServiceProvider 【发布时间】:2019-04-13 23:04:04 【问题描述】:

当我将其放入任何控制器中时,我可以获得 Auth ID

Auth::user()->id

但是当我把它放在 AppServiceProvider.php 中时,它会返回 `Trying to get property 'id' of non-object

我不明白为什么?

编辑:我试过了,但还是不行

public function boot()

    view()->composer('*', function ($view) 

if (Auth::check())

    $id=Auth::user()->id;
    $idd=Person::where('user_id','=',$id)->get('photo');

    $view->with('idd', $idd );
    $view->with('id', $id );

       );

错误: 传递给 Illuminate\Database\Grammar::columnize() 的参数 1 必须是数组类型,给定字符串,在

中调用

【问题讨论】:

可能重复:***.com/questions/37372357/… 您如何验证用户身份? Laravel - How to get current user in AppServiceProvider的可能重复 您好,感谢您的关注。我看到了重复的问题,并为您编辑了帖子。还是行不通。你能帮忙吗? 【参考方案1】:

要获取当前经过身份验证的用户 ID,请使用 Auth::id();

另一种情况可能是没有当前用户,在这种情况下Auth::user() 返回 NULL。将代码包装在

if (Auth::check())

    // Do stuff

确保有用户登录。

【讨论】:

编辑了答案,你有当前用户吗? 我再次编辑帖子时出现了新的错误消息,您可以检查一下吗?【参考方案2】:

这对我有用

<?php

namespace Fitness\Providers;

use Illuminate\Http\Request;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot(Request $request)
    
    view()->share('user', $request->user());
    

【讨论】:

以上是关于拉拉维尔 | Auth::user()->id 在 AppServiceProvider 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

更新或创建行数据库。拉拉维尔

拉拉维尔。如何判断ORM的结果

拉拉维尔 |雄辩的 foreach 不起作用

拉拉维尔 5.6。嘲讽。属性上的模拟方法

拉拉维尔。迁移。添加字段[重复]

拉拉维尔 |大量数据的特殊验证