簡體   English   中英

在laravel 5.3控制器中獲取經過身份驗證的用戶

[英]Get authenticated user in laravel 5.3 controller

我試圖在Laravel 5.3的控制器中獲取Auth::user() ,但每次都顯示為null Laravel 5.3是否已對此進行了更改?

@if (Auth::guest())
    <li><a href="{{ url('/user/login') }}">Login</a></li>
    <li><a href="{{ url('/user/register') }}">Register</a></li>
@else
    <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
        {{ Auth::user()->name }} <span class="caret"></span>
        {{ Auth::user()}}
    </a>

即使我已經登錄,它也會每次進入

首先,它會發生變化; 在5.2中,身份驗證文件位於app / Http / Middleware上,但知道將其更改為vendor / laravel / framework / src / Illuminate / Auth時,我遇到了像您一樣的問題,因為我的項目是5.2,所以我感到困惑,但是您也可以自己制作對app / Http / Middleware上的文件進行身份驗證對我有用,我希望我的回答對您有用

最有可能的不是很“ laravel-way”,而是一種解決方法是定義一個中間件,並在構造方法中傳入一個閉包。

public function __construct()
{   
    $this->middleware(function ($request, $next) {
        $this->user = Auth::user();
        return $next($request);
    });
}

從那時起,您可以在其他方法中使用$this->user 它可以工作,但是我不確定該解決方案是否合適。 如果有人知道更好的方法,我也在尋找它:)

暫無
暫無

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

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