繁体   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