Grundsätzlich ist dies mein __construct meines Controllers. Wenn nicht angemeldete Benutzer versuchen, auf die Routen in diesem Controller zuzugreifen, wird er grundsätzlich an die Route login weitergeleitet. So weit, so gut - wenn der Zustand funktioniert, Redirect funktioniert, Route funktioniert.Laravel 5.4 If-Anweisung funktioniert nicht in __construct()
Also die nächst ich versuche, zu überprüfen, ob Benutzer Zugriff Token gültig ist und wenn es nicht ist werde ich ihn zu Abmelde Route umleiten - mein Beispiel zu vereinfachen ich dies nicht tun, sondern überprüfe ich, wenn $ test_var gleich 1 und umleiten zu login, da wir diesen Routennamen bereits als funktionierend kennen.
Weder erste if ($ test_var == 1), nicht zweite if (test_var $ == 1) Auslöser - es gibt keine Umleitung oder sterben.
Ich habe sogar versucht , wenn (1 == 1) ..
ich auch versucht:
if(isset($this->userCredentials))
return redirect('login');
und es auslöst noch nicht. Es ist wirklich seltsam, als ob ich nicht zuerst angemeldet bin if (isset ... arbeitet und leitet, aber dieses Stück Code ist nichts zu tun, wenn ich angemeldet bin:
Sieht aus wie die Wenn obviosly ist das Problem, aber dies Wenn über Quantentheorie ..
Dies ist der vollständige Code des Konstrukts.
namespace App\Http\Controllers;
use Input;
use Session;
use Auth;
use Redirect;
class stackoverflowController extends ConnectionController
{
public function __construct()
{
$this->middleware('auth');
$this->userCredentials = Session::get('userCredentials');
if(!isset($this->userCredentials))
return redirect('login');
$test_var = 1;
if($test_var == 1)
return redirect('login');
if($test_var == 1)
die(1);
if(1 == 1)
die(1);
}
Vielen Dank. Es hat so funktioniert. Ich kann mir immer noch nicht erklären, warum irgendwo redirect funktioniert ohne send(). –
Problem ist, dass die Umleitung im Konstruktor aufgerufen wird. Und es ist irgendwie Umleitung Aktion umschreiben. –
@ АтанасАтанасов Denken Sie daran, dass jeder Wert, den Sie vom Konstruktor zurückgeben, ignoriert wird. Dies funktioniert nur, weil die 'send'-Methode das Skript nach dem Senden des Redirect-Headers wahrscheinlich beendet. – Furgas