[英]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.