在上一篇,我們介紹了報(bào)表工具的資源集成,基本知道了報(bào)表工具鏈接、模塊、頁(yè)面和移動(dòng)端如何實(shí)現(xiàn)集成。
這一篇,我們看下如何做權(quán)限集成。
使用第三方系統(tǒng)的資源權(quán)限驗(yàn)證
實(shí)際上往往存在多個(gè)系統(tǒng)需要統(tǒng)一權(quán)限認(rèn)證,用戶(hù)要求將某個(gè)系統(tǒng)作為統(tǒng)一認(rèn)證平臺(tái), Smartbi 為了應(yīng)對(duì)這種需求,提供了一個(gè)可以根據(jù)需要擴(kuò)充的權(quán)限驗(yàn)證方式,讓項(xiàng)目能根據(jù)實(shí)際情況開(kāi)發(fā)不同的需求。
實(shí)現(xiàn)步驟
參考“開(kāi)發(fā)插件包”,開(kāi)發(fā)一個(gè)項(xiàng)目插件包;
在插件包項(xiàng)目中新建一個(gè)Java類(lèi) com.mycomp.mypackage.ResourcePermissionAuthDemo,并且實(shí)現(xiàn)接口 IResourcePermissionAuthorization;
配置ResourcePermissionAuthDemo,兩種方式如下:
(1)示例插件包中已配置好,新創(chuàng)建的插件包可在插件包用代碼配置,如:在Module的active方法中使用此代碼catalogTreeModule.getConfig().setResourcePermissionAuthorization("com.mycomp.mypackage.MyResourcePermissionAuth");配置
(2)編輯 Smartbi 服務(wù)器配置文件smartbi-config.xml,如下圖紅色框所示。增加節(jié)點(diǎn)resource-permission-authorization,其屬性為 ResourcePermissionAuthDemo 類(lèi)的全名 com.mycomp.mypackage.ResourcePermissionAuthDemo;
參考“插件部署”文檔,部署該項(xiàng)目插件包,插件包示例請(qǐng)參考 使用第三方系統(tǒng)的資源權(quán)限驗(yàn)證.rar
此后 Smartbi 系統(tǒng)中需要進(jìn)行資源權(quán)限驗(yàn)證的時(shí)候,皆會(huì)跳轉(zhuǎn)到 ResourcePermissionAuthDemo 類(lèi)中由其完成資源權(quán)限驗(yàn)證。
使用第三方的操作權(quán)限驗(yàn)證
不使用 Smartbi 系統(tǒng)自身的操作權(quán)限驗(yàn)證邏輯,而是由第三方系統(tǒng)進(jìn)行操作權(quán)限驗(yàn)證,給 Smartbi 返回一個(gè)用戶(hù)能否訪問(wèn)指定操作的狀態(tài)指示。
實(shí)現(xiàn)步驟
1.在插件包中新建一個(gè)Java類(lèi)com.opauth.takeover.usermanager.FunctionAuthDemo,并且實(shí)現(xiàn)接口 smartbi.usermanager.IFunctionAuth。
接口定義如下:
package com.mycomp.usermanager;
public class TestFunctionAuth implements IFunctionAuth {
private static TestFunctionAuth auth = new TestFunctionAuth();
public static TestFunctionAuth getInstance() {
return auth;
}
private TestFunctionAuth() {
// TestFunctionAuth
}
public boolean isFuncTypeAccessible(String userId, String functionCode) {
// 在這里實(shí)現(xiàn)用戶(hù)操作權(quán)限判斷的邏輯,返回狀態(tài) true|false 指明用戶(hù)能否訪問(wèn)指定操作
return true;
}
}
2.修改插件包文件 applicationContext.xml 增加如下內(nèi)容:
<bean id="usermanager" class="smartbi.usermanager.UserManagerModule" factory-method="getInstance">
<property name="functionAuth" ref="FunctionAuthDemo"/>
</bean>
<bean id="FunctionAuthDemo" class="com.opauth.takeover.usermanager.FunctionAuthDemo" factory-method="getInstance"></bean>
3.GIF演示示例插件包源碼請(qǐng)參考:操作權(quán)限驗(yàn)證.rar
權(quán)限集成,已經(jīng)屬于需要開(kāi)發(fā)人員以代碼的方式來(lái)實(shí)現(xiàn)的范疇了,由于權(quán)限集成涉及眾多技術(shù)細(xì)節(jié),受篇幅所限無(wú)法一一詳細(xì)列示,感興趣的小伙伴可以通過(guò)在線 Wiki 了解詳情。
傳送門(mén):
如何實(shí)現(xiàn)報(bào)表集成?(一)
如何實(shí)現(xiàn)報(bào)表集成?(二)——用戶(hù)同步和單點(diǎn)登錄
如何實(shí)現(xiàn)報(bào)表集成?(三)——資源集成
關(guān)于 Smartbi 的電子表格軟件,大家可以點(diǎn)擊鏈接http://www.aobey.com.cn/spreadsheet了解更多詳情。