文章目录[隐藏]
当你想将 Wordpress 做为后端,以方便 App、小程序等场景,或者你想通过批量上传的方式给 wordpress 添加数据,那么使用 REST Api 将会是一个很必要的选择。
Wordpress REST API 没有完整的用户鉴权功能,为了保证接口的安全,所以我们可以通过第三方插件的方式,为REST API 添加鉴权功能。
安装插件
在 Wordpress 的插件市场,搜索 jwt
,可以看到有多个 jwt
相关的插件。
我主要选择了下面两个中的第一个
选择第一个的好处是,当你请求 http://localhost:8088/wp-json
的时候,就需要鉴权了,会对 GET
请求也需要鉴权。
插件配置
在 wp-config.php
文件中,加入如下的代码,需要设置一个鉴权使用的密钥,请做好保密。
define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');
支持跨域的配置
define('JWT_AUTH_CORS_ENABLE', true);
这样插件就配置完成了。
插件提供的两个新接口
- POST /wp-json/jwt-auth/v1/token: 用于验证用户名、密码,并返回 Token
- POST /wp-json/jwt-auth/v1/token/validate:用于验证 Token 是否正确
获得了 token 之后,调用接口的时候,进行鉴权
白名单Endpoints
除了令牌创建的一些默认白名单外,每次对服务器的调用都将被拦截。但是,您可能需要将某些端点添加到白名单中。您可以使用jwt_auth_whitelist过滤器来实现。请直接添加此过滤器(无 hook)。或者,您可以将其添加到plugins_loaded中。在init(或更晚)内部添加此过滤器将不起作用。
如果您在主题内部添加了该过滤器,并且白名单功能无效,请创建一个小型的 1 文件插件,并在其中添加您的过滤器。
add_filter( 'jwt_auth_whitelist', function ( $endpoints ) {
$your_endpoints = array(
'/wp-json/custom/v1/webhook/*',
'/wp-json/custom/v1/otp/*',
'/wp-json/custom/v1/account/check',
'/wp-json/custom/v1/register',
);
return array_unique( array_merge( $endpoints, $your_endpoints ) );
} );
其它的功能请查看插件详细说明。
如果你想查看你的 wordpress 对外提供的接口,那么请通过 http://localhost:8088/wp-json
接口查看
发表回复