我看過http://wso2.com/library/articles/2012/03/carbon-context-its-usages-wso2-products/,你會發現在底部有一個註釋來解釋失敗的用例。請解釋如何解決這個問題。如何解決「WSO2碳上下文及其在WSO2產品中的使用」中報告的問題?
0
A
回答
0
這個問題並不是CarbonContext中的一個錯誤或限制(至少在我嘗試過的WSO2 AS 5.1.0中)。這可以通過使用下面的代碼片段來證明。
try {
CarbonContext carbonContext = CarbonContext.getCurrentContext();
int tenantId = carbonContext.getTenantId();
System.out.println("TENANT ID:" + tenantId);
String username = carbonContext.getUsername();
System.out.println("USERNAME:" + username);
UserRealm userRealm = carbonContext.getUserRealm();
String[] roleNames = userRealm.getUserStoreManager().getRoleNames();
userRealm.getUserStoreManager().getRoleListOfUser(username);
System.out.println("ALL ROLES:" + Arrays.toString(roleNames));
} catch (Exception e) {
e.printStackTrace();
}
您會注意到Tenant ID已正確打印,但沒有用戶名。雖然不明顯,那是因爲你從來沒有告訴服務員你是誰。雖然您已登錄到管理控制檯,但這並不意味着您已登錄到AS上託管的服務。如果要啓用類似的功能,則需要爲服務設置安全性(可以從管理控制檯執行此操作)。例如,我使用UsernameToken。然後TryIt應該提示您在調用服務時輸入用戶名和密碼。您僅獲得有效憑據的響應。
但是,即使你這樣做,代碼仍然會返回與CarbonContext上的用戶名相關的相同異常爲空。要解決這個問題,需要將以下兩個參數添加到相應服務的services.xml中(例如:samples/HelloService中的 - conf/services.xml)。
<parameter name="adminService" locked="true">true</parameter>
<parameter name="AuthorizationAction"
locked="false">/permission/admin/login</parameter>
這將確保碳上下文被初始化爲關於在調用服務時登錄的用戶所需的信息。
爲了達到此目的,您當然必須重新部署具有對services.xml的更改的服務。而且,一旦重新部署,請務必檢查是否啓用安全性,因爲重新部署會刪除使用管理控制檯完成的安全設置。
相關問題
- 1. WSO2:如何在Dockerfile中下載產品?
- 2. 約WSO2產品
- 3. 如何在WSO2上創建報告DAS
- 4. 如何合併wso2產品?
- 5. 如何在單個碳平臺上安裝WSO2產品(ESB,AS,BPEL,IS)?
- 6. wso2產品 - 記錄用戶在碳控制檯中完成的操作
- 7. 如何使用WSO2 ESB中的WSO2 MB
- 8. WSO2 - 日食中的碳應用項目
- 9. 混淆WSO2的產品
- 10. 如何在wso2碳中應用修補程序文件
- 11. 如何解決WSO2 Developer Studio中
- 12. WSO2實現從碳應用
- 13. 您如何安裝多個WSO2產品?
- 14. 如何解決從CAR部署的WSO2 ESB REST API中的「Class not found」問題?
- 15. 部署不同的WSO2產品作爲單一碳應用項目
- 16. WSO2 - 嘗試啓動WSO2時的問題
- 17. WSo2 APIM 1.10.0產品配置文件
- 18. 通過WebDAV訪問WSO2碳註冊表
- 19. WSO2 DAS是WSO2 BAM的新名稱或後續產品嗎?
- 20. WSO2 APIM和BAM - 如何解決空值問題?
- 21. 如何指定WSO2 Carbon產品中CAR之間的相關性?
- 22. wso2碳4.0集羣指令
- 23. wso2碳綁定地址
- 24. WSO2碳錯誤12.04 64位
- 25. 如何在aws beanstalk中部署wso2產品?
- 26. 通行證評論中WSO2提交碳
- 27. 如何在WSO2上發佈WSO2 API?
- 28. 如何遠程訪問wso2碳的OSGI控制檯
- 29. 對WSO2的產品負載均衡
- 30. 如何在多個WSO2產品中使用單個`用戶存儲'