簡體   English   中英

從Wordpress內部檢查Laravel上經過身份驗證的用戶?

[英]Check authenticated user on Laravel from inside Wordpress?

這是一個奇怪的。

我有兩個網站,一個由Laravel(5.3)驅動,另一個由Wordpress驅動。

Laravel存在於portal.example.com

WordPress存在於example.com

我正在嘗試從Wordpress網站檢查當前在Laravel網站上登錄的用戶。

我將Laravel設置為使用cookie驅動程序進行會話,並將cookie域設置為.example.com,以便現在可以從Wordpress網站上的任何位置查看此cookie。

在wordpress頭文件(或wp-load.php文件或functions.php文件)的頂部,我嘗試了很多地方,但遇到相同的問題),其中包括以下內容:

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);
}

現在,無論何時我登錄Laravel網站,都可以訪問example.com,然后在頁面頂部找到我的Laravel用戶ID當前已成功var_dump'd。

但是,一旦我訪問example.com/other-pages/,它就是var_dumping false。

我知道隨着站點繼續加載,它仍然可以找到我需要的兩個文件,如果我將它們更改為非意義文件名,則站點將消失。 我什至可以使用var_dump($ laravel)並獲得大量的Laravel外觀列表。

有沒有機會有人知道這里會發生什么?

編輯:

我注意到的第一件事是,在不起作用的頁面上有所不同,如果我是var_dump($ laravel)...我得到了...

protected 'routeResolver' => null

接近尾聲而不是...

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

編輯2:

這里有點進步。

如果我這樣做

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

var_dump($response);

我可以看到其他頁面上的響應是Laravel 404頁面,因此它遇到了一個錯誤,並且從未返回過我的用戶。

我可以通過將每個wordpress域添加到我的Laravel路由文件中來“修復”它,但這很臟 ,大聲笑。

有辦法解決這個問題嗎?

制作一個稱為WordpressMiddlware的中間件,並在每個請求中添加它:

PHP

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

在wordpress中:

PHP

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

現在,來自wordpress的每個請求都將重定向到所需的路徑,而您不會得到404。

暫無
暫無

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

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