2016-12-01 3 views
0

Ich versuche, Auth::user() in der Steuerung von Laravel 5.3 zu bekommen, aber es zeigt null jedes Mal. Wird dies in Laravel 5.3 geändert?Get authentifizierten Benutzer in Laravel 5.3 Controller

@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> 

sein Gehen, jedes Mal, wenn Zustand, auch wenn ich angemeldet bin in

+3

Bitte teilen Sie uns den neuesten Code mit. Danke –

+0

Ist der Benutzer eingeloggt? – James

+0

ja Benutzer ist eingeloggt –

Antwort

0

zunächst einmal ja, es ändert; in 5.2 Authenticate Datei war auf app/Http/Middleware, aber weiß seine Änderung zu Vendor/Laravel/Framework/src/Illuminate/Auth jetzt hatte ich das gleiche Problem wie du und weil mein Projekt 5.2 war, bekomme ich verwirrt, aber Sie können auch Ihre Datei eigene authenticate auf app/Http/Middleware seine Werke für mich ich hoffe, meine Antwort für Sie nützlich sein

+0

Dies funktioniert nicht für mich. Können Sie bitte Ihre Authentizität teilen? PHP-Dateicode? und hast du irgendwelche Änderungen an der kernel.php vorgenommen? oder irgendwelche anderen Änderungen? –

+0

Hi Dies ist mein Authenticate.php: public function handle ($ request, Closure $ next, $ guard = null) { if (Auth :: guard ($ guard) -> guest()) { if ($ request -> ajax() || $ request-> willsJson()) { Antwort zurücksenden ('Unauthorized.', 401); } sonst { return redirect() -> route ('admin.login'); } } return $ next ($ Anfrage); } ich ändere auch meinen Kernel in: 'auth' => \ App \ Http \ Middleware \ Authenticate :: class, –

0

Was höchstwahrscheinlich ist kein sehr „Laravel-Weg“, aber eine Abhilfe für das ist eine Middleware und Vergehen definiert, in einer Schließung in der Konstruktormethode.

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

von da Sie $this->user in Ihren anderen Methoden verwenden können. Es funktioniert, aber ich bin mir nicht sicher, wie richtig eine Lösung ist. Wenn jemand einen besseren Weg kennt, suche ich auch danach :)

Verwandte Themen