检查从内部WordPress的认证上Laravel的用户?

问题描述 投票:7回答:1

这里有一个奇怪的一个。

我有两个网站,一个搭载Laravel(5.3)和一个采用WordPress。

Laravel存在于portal.example.com

WordPress的存在在example.com

我想检查哪些用户当前登录从WordPress网站的Laravel网站。

我有Laravel设置为使用cookie驱动程序的会议,并有Cookie域设置为.example.com的,所以我现在可以看到这个cookie从任何地方在WordPress网站。

在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假的。

我知道它仍然发现了两个文件,我需要为网站继续加载,如果我将其更改为无感文件名现场死亡。我甚至可以的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路线文件“修理”它但这只是脏了,哈哈。

任何想法解决的办法?

php wordpress laravel
1个回答
0
投票

创建一个名为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。

© www.soinside.com 2019 - 2024. All rights reserved.