2017-08-16 76 views
1

我需要爲WordPress的插件,將有一些自定義的API端點,和我已經安裝了這兩個插件WordPress和智威湯遜定製API REST端點

我已經創建了自定義端點:

add_action('rest_api_init', function ($data) { 
    register_rest_route('mladi-info/v1', '/user/favorites', [ 
     'methods' => 'GET', 
     'callback' => 'mi_get_favorite_posts' 
    ]); 
}); 

我需要保護此端點,以便只能處理髮送了帶有JWT令牌的請求(使用/ wp-json/jwt-auth/v1/token端點發送用戶名和密碼生成),否則應該返回401個狀態代碼。我怎麼做?

+0

不相關的問題,但如果你正在尋找一個快速的方法來建立和測試的東西,看看這個視頻,我創建:https://youtu.be/Mp7T7x1oxDk –

回答

1

註冊一個新的路線時,應添加permission_callback參數。

add_action('rest_api_init', function ($data) { 
     register_rest_route('mladi-info/v1', '/user/favorites', 
      array(
       'methods' => 'GET', 
       'callback' => 'mi_get_favorite_posts', 
       'permission_callback' => function ($request) { 
         if (current_user_can('edit_others_posts')) 
         return true; 
       } 
      ) 
     ); 
    }); 

JWT驗證插件將提供用戶對象permission_callback功能的基礎上,從報頭中的令牌值,和所有你需要做的是制定一些「權限的邏輯」該函數內部,這將返回布爾價值。

在我張貼的解決方案,回調可以訪問REST端點僅當它訪問用戶,擁有「edit_others_posts」的能力 - 這是爲管理員和編輯的情況。