在看了Cookie Authentication In A AngularJS WordPress Theme之后,清楚了当Wordpress在中使用get_current_user_id()
或者 wp_get_current_user()
来判断用户是否登录,获取当前已登录的用户信息通过一个Wordpress网站,所有的验证方法钩子都会调用determine_current_user
过滤器,包括wp_validate_auth_cookie()
.
使用Wordpress做接口的安全验证是WP REST API plugins中列的JWT Auth for WP REST API,由于登录是使用
/wp-json/jwt-auth/v1/token
,
当API的方法如果get_current_user_id()
会返回0,自己修改了wp-api-jwt-auth插件的includes/class-jwt-auth.php
144行,将
$this->loader->add_filter('determine_current_user', $plugin_public, 'determine_current_user', 99);
改为了
remove_filter( 'determine_current_user', 'json_basic_auth_handler', 5 );
$this->loader->add_filter('determine_current_user', $plugin_public, 'determine_current_user', 5);
不能获取用户信息,看了WP-API/Basic-Auth中才发现自己将jwt中的determine_current_user
$priority(过滤器函数的优先级)改小了,我尝试将优先级由5
改为21
,就可以获取到用户信息了,插件默认过滤器函数的优先级是99
,原来是我自己把自己害了...