2015-09-22 70 views
1

在我的WSO2 api商店實例中,我想對其進行一些修改,以便只允許對Admin進行一些操作,而不允許對普通Publiser/Subscriber進行一些操作。例如,如果我想讓其他用戶重新編輯我發佈的API,並且只有管理員角色應該有權修改任何API。爲此,我如何獲得用戶角色?我如何在WSO2 api商店/發行商中獲得特定用戶角色

我試圖從碳模塊獲得角色

/modules/carbon/scripts/user/user.js

User.prototype.getRoles = function() { 
     return this.um.manager.getRoleListOfUser(this.username); 
    }; 

    User.prototype.hasRoles = function (roles) { 
     var i, j, role, 
      rs = this.getRoles(), 
      length1 = roles.length, 
      length2 = rs.length; 
     L1: 
      for (i = 0; i < length1; i++) { 
       //Array.indexOf() fails due to Java String vs JS String difference 
       role = roles[i]; 
       for (j = 0; j < length2; j++) { 
        if (role == rs[j]) { 
         continue L1; 
        } 
       } 
       return false; 
      } 
     return true; 
    }; 

但沒有成功調用此方法。任何人都有一個想法如何獲得登錄用戶的角色,或者如何檢查登錄用戶是否是管理員?

回答

1

您可以通過分配所需的角色分配給用戶做到這一點,看看到Adding User Roles

或者

你可以使用WSO2 API Manager的發佈API "Validate Roles" TR獲取登錄的用戶的角色。

Description : 
     Check if the user logged in user is any one in a given list of users 
URI : 
     http://localhost:9763/publisher/site/blocks/item-add/ajax/add.jag 
URI Parameters :  
     action=validateRoles&roles=<list of roles> 
HTTP Methods : 
     GET 
Example : 
     curl -b cookies "http://localhost:9763/publisher/site/blocks/item-add/ajax/add.jag?action=validateRoles&roles=admin" 
+0

感謝您的回覆。使用驗證角色進行檢查,但它對所有角色返回{response:true}。 例如,我有一個管理員用戶,他具有管理員角色。當我使用API​​驗證角色時,它將返回true。我有另一個用戶說'測試',並與角色'內部/每個人',當我驗證這個用戶的'管理員'角色,我得到相同的迴應真正的,即使這個用戶不是管理員 它不驗證當前用戶角色。 – mddiljith

+0

您的確切答覆是什麼,請在此處添加。你有沒有使用credintial先登錄? –

+0

對於管理員用戶 的http://本地主機:9763 /發行商/網站/塊/項目加/ AJAX/add.jag行動= validateRoles&角色=管理 響應 { 「錯誤」:假​​的, 「反應」 :true} 對於不是管理員響應的另一個用戶是一樣的。 – mddiljith