在WSO2 API管理器的发布者门户或API发布者中获取用户角色

时间:2018-09-25 16:04:11

标签: wso2 wso2-am

我已经完成了WSO2 API Manager 2.5.0的安装。

我正在通过创建新的子主题并编辑.jag文件来自定义Publisher门户。一切正常,直到这里。

我想根据用户角色显示元素。 我的第一个问题是:我可以使用jag文件获取发布者门户中登录用户的角色吗?

我找不到路,所以我想了一个解决方法:向RESTful API发送一个针对WSO2 API Manager - Publisher的请求。 问题是我(在文档上)找不到返回用户角色的方法。

我的第二个问题是:有某种方法可以返回用户的角色?

我知道使用Publisher APIS的解决方案,但是已经弃用了它们,无论如何我都对其进行了测试,即使用户未分配角色,它也始终返回true。

如果需要,请向我询问更多信息。 预先感谢。

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是调用APIUtil类公开的java方法。从该util类中查找的方法将是具有以下签名的getListOfRoles方法。

public static String[] getListOfRoles(String username) throws APIManagementException;

或者,您也可以使用以下方法,该方法不引发任何错误,而是在出现错误情况时返回一个空数组。

public static String[] getListOfRolesQuietly(String username);

因此要在Jaggery文件中使用此方法,可以使用以下方法使用此方法

var roleList = Packages.org.wso2.carbon.apimgt.impl.utils.APIUtil.getListOfRoles(userName);

上面的代码应该在您的jaggery文件中返回一个由角色组成的字符串数组,您可以使用该数组继续进行下一步。如果您检查在Store或Publisher应用程序中找到的其他jaggery文件,则上述方法是将Java类导入到jaggery文件中并使用它的方式。

APIUtil类在以下位置可用:https://github.com/wso2/carbon-apimgt/blob/1.2.5/components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/utils/APIUtil.java#L2420