当前位置: 首页 > 知识库问答 >
问题:

Wordpress JWT认证令牌问题

严兴言
2023-03-14

我正在使用wordpress rest api的JWT认证插件进行api访问认证,但问题是< code > https://example . com/WP-JSON/jwt-auth/v1/token 正在生成不允许的错误。

例如,如果我尝试在postman中运行此url``https://example.com/wp-json/jwt-auth/v1/token`该API还需要身份验证,因为它应该与身份验证一起平稳运行。

因此,为什么这个URL API需要身份验证并且不能在没有身份验证的情况下访问此API是我关心的问题。

任何帮助都将不胜感激。

共有1个答案

夏飞掣
2023-03-14

得到了解决方案,创建了一个插件并在其中添加以下代码,效果很好。

if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly.
}

if ( ! function_exists( 'require_auth_for_all_endpoints' ) ) {
    add_filter( 'rest_pre_dispatch', 'require_auth_for_all_endpoints', 10, 3 );
    function require_auth_for_all_endpoints( $result, $server, $request ) {
        if ( ! is_user_logged_in() ) {

            // Only allow these endpoints: JWT Auth.
            $allowed_endpoints = array(
                '/jwt-auth/v1/token/validate',
                '/jwt-auth/v1/token',
                '/oauth/authorize',
                '/oauth/token',
                '/oauth/me',
            );
            $allowed_endpoints = apply_filters( 'reqauth/allowed_endpoints', $allowed_endpoints );

            // Endpoint checker.
            $regex_checker = '#^(' . join( '|', $allowed_endpoints ) . ')#';
            $regex_checker = apply_filters( 'reqauth/regex_checker', $regex_checker );

            $is_allowed = preg_match( $regex_checker, $request->get_route() );
            $is_allowed = apply_filters( 'reqauth/is_allowed', $is_allowed );

            if ( ! $is_allowed ) {
                return new WP_Error( 'rest_not_logged_in', __( 'You are not currently logged in.' ), array( 'status' => 401 ) );
            }
        }
    }
}
 类似资料:
  • 最后,我实现了UserDetailsService接口

  • 问题内容: 我正在编写一个想同时用作Web应用程序和API提供程序的nodejs应用程序。验证用户身份后,我想为该用户分配一个令牌,以用于后续请求。这对于Web应用程序的通行证非常有用,因为我只是在会话中使用令牌对用户进行序列化和反序列化。但是,在响应API请求时,没有用于设置存储会话信息的cookie。理想情况下,护照将在会话和请求正文中都寻找令牌。有什么方法可以配置通行证来完成此任务吗? 问题

  • 问题内容: 我已经阅读了《 Django Rest Framework指南》并完成了所有教程。一切似乎都有意义,并且按应有的方式工作。我得到了如上所述的基本身份验证和会话身份验证。 http://django-rest-framework.org/api-guide 但是,我在文档的令牌认证部分苦苦挣扎,它缺少或没有教程那么深入。 http://django-rest-framework.org/

  • 当一个人试图使用azure AD承载令牌访问我们的系统时,这个获取和缓存资源令牌的工作流程是不存在的。 所以我的问题是,我如何使用承载令牌来启用它?如何才能像使用OpenIDConnect一样请求额外的资源令牌?是否可以使用ADAL从承载令牌获取授权代码?

  • 问题内容: 我试图允许用户使用他们的帐户通过单独的Web服务登录我的Flask应用。我可以联系此Web服务的api并接收安全令牌。如何使用此令牌对用户进行身份验证,以便他们可以访问受限视图? 我不需要将用户保存到我自己的数据库中。我只想验证他们的会话。我相信可以使用Flask- Security和@auth_token_required装饰器完成此操作,但是文档不是很详细,我不确定如何实现。 编辑