【问题标题】:Check authenticated user on Laravel from inside Wordpress?从 Wordpress 内部检查 Laravel 上经过身份验证的用户?
【发布时间】:2017-06-08 08:42:20
【问题描述】:

这是一个奇怪的。

我有两个网站,一个由 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 路由文件来“修复”它,但这只是 ,哈哈。

有什么办法解决这个问题吗?

【问题讨论】:

标签: php wordpress laravel


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2018-11-26
    • 2016-01-17
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多