公司想要使用saiku,希望沒有密碼直接可以使用,這樣可以直接以iframe的形式嵌套到其他的系統中。
在網上搜索了很多,大致類似這篇博客介紹的:http://www.cnblogs.com/avivaye/p/4877948.html
可是效果不能達到預期,沒有辦法只能修改代碼重新編譯。
先上結果,修改這個文件的代碼:saiku-core/saiku-web/src/main/java/org/saiku/web/rest/resources/SessionResource.java。效果如下:
diff --git a/saiku-core/saiku-web/src/main/java/org/saiku/web/rest/resources/SessionResource.java b/saiku-core/saiku-web/src/main/java/org/saiku/web/rest/resources/SessionResource.java index 54acb28..baed480 100644 --- a/saiku-core/saiku-web/src/main/java/org/saiku/web/rest/resources/SessionResource.java +++ b/saiku-core/saiku-web/src/main/java/org/saiku/web/rest/resources/SessionResource.java @@ -126,6 +126,12 @@ public class SessionResource { Map<String, Object> sess = null; try { sess = sessionService.getSession(); + if (sess.size()==0){ + //尚未登錄 + sessionService.login(req, "admin", "admin"); + sess = sessionService.getSession(); + log.debug("unlogin user login with admin " + sess); + } } catch (Exception e) { return Response.serverError().entity(e.getLocalizedMessage()).build(); }
加號部分就是修改添加的內容。重新編譯成功!我已經去掉了很多商業分析和歡迎頁面,打開之后頁面非常簡單如圖:
下面介紹一下修改過程
一、跟蹤代碼
發現打開頁面后,判斷用戶是否登錄,會發送ajax請求:http://localhost:8080/saiku/rest/saiku/session
尋找代碼,發現主要有兩部分組成:
controller:saiku-core/saiku-web/src/main/java/org/saiku/web/rest/resources/SessionResource.java
Service:saiku-core/saiku-web/src/main/java/org/saiku/web/service/SessionService.java
二、代碼分析
如果需要達到效果,第一次請求就要讓未登錄用戶默認登錄,那么就簡單了。getSession就是對應ajax請求的方法,如果用戶沒有登錄,做一次登錄操作即可。
登錄操作的方法:sessionService.login(req, "admin", "admin")。時間關系寫的不優雅,莫怪!!!
三、重新編譯
這就不用說了,代碼已經提交到github,參考:https://github.com/lihehuo/saiku