You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel配置JWT对接WordPress API实现仪表盘数据展示咨询

Laravel对接WordPress JWT API 实现仪表盘数据展示方案

一、Laravel配置JWT对接WordPress API步骤

这里的JWT用于让Laravel安全调用WordPress的JWT接口,你也可以同时用它做Laravel后台用户登录,核心是完成跨系统的API数据拉取:

  1. 安装Laravel JWT依赖包
    用composer安装业内常用的JWT工具包:

    composer require tymon/jwt-auth
    

    发布配置文件并生成加密密钥:

    php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
    php artisan jwt:secret
    
  2. 配置用户模型(如需Laravel后台登录验证)
    如果你的仪表盘需要用户登录权限,让User模型实现JWTSubject接口:

    namespace App\Models;
    
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Tymon\JWTAuth\Contracts\JWTSubject;
    
    class User extends Authenticatable implements JWTSubject
    {
        public function getJWTIdentifier()
        {
            return $this->getKey();
        }
    
        public function getJWTCustomClaims()
        {
            return [];
        }
    }
    

    同时在config/auth.php里配置JWT驱动的守卫:

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'api' => [
            'driver' => 'jwt',
            'provider' => 'users',
        ],
    ],
    
  3. 编写WordPress API调用服务
    创建一个服务类封装API请求逻辑,比如app/Services/WordPressApiService.php:

    namespace App\Services;
    
    use GuzzleHttp\Client;
    
    class WordPressApiService
    {
        protected $client;
        protected $token;
    
        public function __construct()
        {
            $this->client = new Client([
                'base_uri' => config('wordpress.api_url'), // 在config中配置WordPress站点地址
                'headers' => [
                    'Authorization' => 'Bearer ' . config('wordpress.jwt_token'), // 从WordPress获取的有效token
                    'Accept' => 'application/json',
                ],
            ]);
        }
    
        // 获取已安装插件列表
        public function getPlugins()
        {
            $response = $this->client->get('/wp-json/wp/v2/plugins'); // 对应WordPress JWT插件的端点
            return json_decode($response->getBody(), true);
        }
    
        // 获取主题信息
        public function getThemes()
        {
            $response = $this->client->get('/wp-json/wp/v2/themes');
            return json_decode($response->getBody(), true);
        }
    }
    

    可以在config/app.php中添加服务别名,或者直接在控制器里通过依赖注入使用。

  4. 控制器调用服务并传递数据到模板
    在仪表盘控制器中调用服务获取数据,再传给Blade视图:

    namespace App\Http\Controllers;
    
    use App\Services\WordPressApiService;
    
    class DashboardController extends Controller
    {
        public function index(WordPressApiService $wpApi)
        {
            $plugins = $wpApi->getPlugins();
            $themes = $wpApi->getThemes();
    
            return view('dashboard', compact('plugins', 'themes'));
        }
    }
    

    最后在Blade模板中直接遍历数据展示:

    <h3>已安装插件</h3>
    <ul>
        @foreach($plugins as $plugin)
            <li>{{ $plugin['name'] }} - 版本:{{ $plugin['version'] }}</li>
        @endforeach
    </ul>
    
    <h3>当前主题</h3>
    <div>
        <p>名称:{{ $themes['active']['name'] }}</p>
        <p>版本:{{ $themes['active']['version'] }}</p>
    </div>
    

二、替代方案

如果觉得JWT配置繁琐,可选择以下更轻量化的方案:

  • WordPress应用密码认证:WordPress 5.6+自带应用密码功能,无需额外插件,在用户个人中心生成应用密码后,调用API时用Basic Auth(用户名:应用密码做Base64编码),简单易上手。
  • 直接读取WordPress数据库:在Laravel的config/database.php中添加WordPress数据库连接,直接查询wp_plugins、wp_options表获取数据,但这种方式耦合性极高,WordPress结构变动会直接影响仪表盘,仅适合测试场景。
  • OAuth2认证:安装WordPress的OAuth2插件,Laravel用league/oauth2-client包对接,这是更标准的第三方应用认证方式,适合多站点或严格权限控制的场景。

三、关键注意点

  • 确保WordPress的JWT插件配置正确:开启跨域支持(若Laravel与WordPress域名不同),设置好JWT密钥,开放所需API端点。
  • 调用API时严格遵循Bearer {token}的Authorization头格式,注意token的过期时间,必要时实现自动刷新逻辑。
  • 处理API请求异常:在服务类中添加try-catch块,捕获网络错误、token失效、权限不足等情况,返回友好提示或记录日志。

内容的提问来源于stack exchange,提问作者niwretto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:35:14