LOGO
Yutuo

最近做一个系统,其域名主站是用WordPress来实现的,在域名下有一个子目录是我要做的一个小型管理系统。

管理系统用的是Laravel 5.5,客户要求在WordPress主站上要根据子站是否登陆来显示头部菜单。换句话说,就是要在WordPress里取得是否已经在Laravel里登陆。

考虑了很久,其实方法有两个。一个简单,一个复杂一些,基本都能实现。

方法一

这个方法不支持Cookie,如果实现几天无需登陆的功能,请使用方法二。

这个方法很简单,在Laravel登陆时,把一个值写入SessionWordPress里判断该值是否在Session里存在。

方法二

这个方法相对通用,不过如果WordPress启用了缓存,有可能会有问题(这个没有测试)。方法是直接使用Laravel里的登陆验证功能。

前提:

  • 本代码在Laravel 5.5下测试通过。
  • 假设Laravel 5.5的系统在域名主站的test目录下。
PHP
$app = NULL;
function isLaravelLogin() {
    global $app;
    if (is_null($app)) {
        require_once $_SERVER['DOCUMENT_ROOT'].'/test/vendor/autoload.php';
        $app = require_once $_SERVER['DOCUMENT_ROOT'].'/test/bootstrap/app.php';
        $app->make('Illuminate\Contracts\Http\Kernel')
            ->handle(Illuminate\Http\Request::capture());

        if (!array_key_exists($app['config']['session.cookie'], $_COOKIE)) {
            return false;
        }

        $sessionId = $app['encrypter']->decrypt($_COOKIE[$app['config']['session.cookie']], false);

        $session = $app['session']->driver();
        $session->setId($sessionId);
        $session->start();
    }
    return $app['auth']->check();
}

把上面的方法加到WordPress模板的function.php里,就可以在模板里使用isLaravelLogin方法了。

转载请注明:宇托的狗窝 » 从外部取得Laravel登陆信息的方法和实现
上一篇
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址