Überprüfen Sie den authentifizierten Benutzer auf Laravel innerhalb von WordPress?

Lesezeit: 2 Minuten

Uberprufen Sie den authentifizierten Benutzer auf Laravel innerhalb von Wordpress
Octoxan

Hier ist eine seltsame.

Ich habe zwei Websites, eine von Laravel (5.3) und eine von WordPress.

Laravel existiert unter portal.example.com

WordPress existiert auf example.com

Ich versuche zu überprüfen, welcher Benutzer derzeit auf der Laravel-Site von der WordPress-Site angemeldet ist.

Ich habe Laravel so eingerichtet, dass es den Cookie-Treiber für Sitzungen verwendet, und die Cookie-Domain auf .example.com eingestellt, sodass ich dieses Cookie jetzt von überall auf der WordPress-Site sehen kann.

Am Anfang der WordPress-Header-Datei (oder der wp-load.php-Datei oder der functions.php-Datei, ich habe eine Reihe von Stellen ausprobiert, bekomme aber das gleiche Problem) habe ich Folgendes eingefügt …

require $_SERVER['DOCUMENT_ROOT'].'/../laravel/bootstrap/autoload.php';
$laravel = require $_SERVER['DOCUMENT_ROOT'].'/../laravel/bootstrap/app.php';

$laravel->make('Illuminate\Contracts\Http\Kernel')
        ->handle(Illuminate\Http\Request::capture());

if (Auth::check()) {
    var_dump(Auth::user()->id);
} else {
    var_dump(false);
}

Wenn ich mich jetzt auf der Laravel-Site anmelde, kann ich zu example.com gehen und oben auf der Seite wird die ID meines Laravel-Benutzers derzeit erfolgreich var_dump’d.

Sobald ich jedoch example.com/other-pages/ besuche, ist var_dumping false.

Ich weiß, dass es immer noch die beiden Dateien findet, die ich benötige, während die Site weiter lädt, und wenn ich sie in unsinnige Dateinamen ändere, stirbt die Site. Ich kann sogar var_dump($laravel) und bekomme eine riesige Liste von Dingen, die nach Laravel aussehen.

Hat vielleicht jemand eine Idee, was hier los sein könnte?

Bearbeiten:

Das erste, was mir aufgefallen ist, dass es auf den Seiten, auf denen dies nicht funktioniert, anders ist, ist, wenn ich var_dump($laravel)… erhalte ich…

protected 'routeResolver' => null

Gegen Ende statt…

protected 'routeResolver' => 
        object(Closure)[805]
          ...

BEARBEITEN 2:

Hier ein kleiner Fortschritt.

Wenn ich das mache…

$kernel = $app->make('Illuminate\Contracts\Http\Kernel');
$response = $kernel->handle( $request = Illuminate\Http\Request::capture());

var_dump($response);

Ich konnte sehen, dass die Antwort auf diesen anderen Seiten die Laravel 404-Seite war, also traf sie auf einen Fehler und gab meinen Benutzer nie zurück.

Ich kann es “reparieren”, indem ich jede WordPress-Domain zu meiner Laravel-Routendatei hinzufüge, aber das ist nur so dreckiglol.

Irgendeine Idee für einen Weg, dies zu umgehen?

  • Ich habe das gleiche Problem, ist es für Sie gelöst?

    – Priya

    23. Juni 2018 um 7:10 Uhr

  • Scheint ein Duplikat von stackoverflow.com/q/35643938/470749 zu sein

    – Ryan

    13. März 2019 um 20:45 Uhr

  • Ich habe hier eine vollständige Antwort gepostet: stackoverflow.com/a/55198453/470749

    – Ryan

    16. März 2019 um 15:35 Uhr

Uberprufen Sie den authentifizierten Benutzer auf Laravel innerhalb von Wordpress
Zartosht Sepidemann

Machen Sie eine Middleware namens WordPressMiddlware und machen Sie es in jeder Anfrage:

PHP

public function handle($request, Closure $next)
{
    return $request->has("from_wordpress") ? redirect("PATH_TO_AUTH") : $next($request);
}

Bei WordPress:

PHP

$kernel = $app->make('Illuminate\Contracts\Http\Kernel');
$response = $kernel->handle( $request = Illuminate\Http\Request::capture());
$response->merge(["from_wordpress" => true]);

Jetzt wird jede Anfrage von WordPress auf den gewünschten Pfad umgeleitet und Sie erhalten kein 404.

928410cookie-checkÜberprüfen Sie den authentifizierten Benutzer auf Laravel innerhalb von WordPress?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy