Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从Wordpress内部检查Laravel上经过身份验证的用户?_Php_Wordpress_Laravel - Fatal编程技术网

Php 从Wordpress内部检查Laravel上经过身份验证的用户?

Php 从Wordpress内部检查Laravel上经过身份验证的用户?,php,wordpress,laravel,Php,Wordpress,Laravel,这里有一个奇怪的 我有两个网站,一个由Laravel(5.3)提供动力,另一个由Wordpress提供动力 Laravel位于portal.example.com Wordpress存在于example.com 我正在尝试检查哪个用户当前从Wordpress站点登录到Laravel站点 我已经将Laravel设置为在会话中使用cookie驱动程序,并将cookie域设置为.example.com,这样我现在就可以在Wordpress站点的任何地方看到这个cookie 在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_转储

然而,一旦我访问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);
我可以看到其他页面上的响应是Laravel404页面,因此它遇到了一个错误,并且从未返回我的用户

我可以通过将每个wordpress域添加到我的Laravel routes文件来“修复”它,但那只是脏的,哈哈


想办法解决这个问题吗?

制作一个名为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。

我也有同样的问题,它是否为您解决了?似乎是我在这里发布的完整答案的副本: