【发布时间】:2020-09-20 21:23:25
【问题描述】:
我正在创建一个通过其余 API 使用 wordpress 作为后端的 REACT 应用程序。我正在使用 Simple-JWT-Login 插件来处理注册、登录、身份验证,并且效果很好。
我想阻止未登录的用户访问 /wp/v2/posts 端点。我知道我可以通过以下方式做到这一点:
add_filter( 'rest_authentication_errors', function( $result ) {
if ( ! empty( $result ) ) {
return $result;
}
if ( ! is_user_logged_in() ) {
return new WP_Error( 'rest_not_logged_in', 'You are not currently logged in.', array( 'status' => 401 ) );
}
if ( ! current_user_can( 'edit_posts' ) ) {
return new WP_Error( 'rest_not_admin', 'You are not entitled to view that.', array( 'status' => 401 ) );
}
return $result;
});
但是,这会阻止所有端点,包括 ?rest_route=/simple-jwt-login/v1/auth 和 ?rest_route=/simple-jwt-login/v1/users,它们来自用于注册和验证用户的 Simple-JWT-Login 插件。因此,用户最终会遇到第 22 个问题,除非他们已经登录,否则他们无法登录!
有没有办法修改上述代码以仅阻止 wp/v2/posts/ 端点,或者有效地将注册和身份验证端点列入白名单?
非常感谢您的任何想法!
已经在这里和其他地方搜索过,但找不到解决方案。
【问题讨论】:
-
您好,在探索 wp rest API 时,我遇到了同样的问题。你终于找到解决办法了吗?我正在徘徊如何创建端点白名单来解决这个问题
-
抱歉回复晚了 - 看不到通知。不,不幸的是我从来没有得到任何地方。如果您在此期间找到了解决方案,很高兴知道!
标签: endpoint wordpress-rest-api