簡體   English   中英

即使用戶未登錄,如何獲取用戶(經過身份驗證的)信息?

[英]How to get user(authenticated) information even when user is not logged in?

我想從Laravel的內置用戶表中公開顯示用戶信息。 更具體地說,任何人都無需登錄即可查看用戶信息( nameemailusername )。我在刀片文件中使用了這些信息:

{{ Auth::user()->name }}
{{ Auth::user()->email }}

但是它僅在用戶登錄時有效,否則顯示錯誤。 甚至我在控制器中使用了ELOQUENT並通過view$ user對象都傳遞 我附上圖片,以便您了解我的問題。 這是我的PagesController文件

<?php

namespace App\Http\Controllers;
use App\Post;
use App\User;

class PagesController extends Controller{
    public function getIndex(){
        $posts=Post::orderBy('id', 'DESC')->paginate(4);
        $user=User::all();
        return view('pages.welcome')->withPosts($posts)->withUser($user);
    }
}

這是我的welcome.blade.php文件

<div class="panel-heading">{{ ucwords($user->name) }}</div>

Auth :: user獲取當前已認證用戶的信息。 因此,當用戶登錄時,它將正常工作。

Auth :: user()返回當前通過身份驗證的用戶,對於來賓用戶為null。 因此,如果您在訪客用戶上調用Auth::user()->name ,它將顯示trying to get property of non-object的錯誤trying to get property of non-object因為它嘗試從空對象獲取名稱

您可以在刀片中使用如下所示的內容:

@if(Auth::check())
    User: {{ Auth::user()->name }}
    Email: {{ Auth::user()->email }}
@else
    User: Guest
@endif

如果要顯示所有用戶,請在刀片中使用以下命令:

@foreach(\App\User::all() as $user)
    User: {{ $user->name }}
    Email: {{ $user->email }}
@endforeach

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM