JWT Auth做API鉴权之后,除了鉴权访问之外,需要对一些API做白名单控制,比如IndexNow、Jetpack等插件,都有API的。
做一个例子,来为IndexNow
增加白名单。
在未增加白名单前,接口会被拦截:
functions.php
中增加白名单:
/** * JWT Auth WHITELISTING ENDPOINTS. * * @link https://cn.wordpress.org/plugins/jwt-auth/ */ add_filter( 'jwt_auth_whitelist', function ( $endpoints ) { $your_endpoints = array( '/wp-json/indexnow/v_1.0.1/apiKey', '/wp-json/indexnow/v_1.0.1/submitUrl', '/wp-json/indexnow/v_1.0.1/getStats', '/wp-json/indexnow/v_1.0.1/allSubmissions', ); return array_unique( array_merge( $endpoints, $your_endpoints ) ); } );
增加后,IndexNow插件就可以正常使用了。
最近发现Yoast SEO Premium的API会受到拦截。经测试,其实并不指Yoast SEO,只要API带有问号?
就都会被拦截。解决办法是将白名单功能作为WordPress插件来使用即可。
我已经做好了一个白名单插件,下载地址:JWT Auth Whitelist。