saiku 無密碼登錄

公司想要使用saiku,但願沒有密碼直接可使用,這樣能夠直接以iframe的形式嵌套到其餘的系統中。html

在網上搜索了不少,大體相似這篇博客介紹的:http://www.cnblogs.com/avivaye/p/4877948.htmljava

但是效果不能達到預期,沒有辦法只能修改代碼從新編譯。git

先上結果,修改這個文件的代碼:saiku-core/saiku-web/src/main/java/org/saiku/web/rest/resources/SessionResource.java。效果以下:github

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();
          }

加號部分就是修改添加的內容。從新編譯成功!我已經去掉了不少商業分析和歡迎頁面,打開以後頁面很是簡單如圖:web

下面介紹一下修改過程ajax

1、跟蹤代碼

發現打開頁面後,判斷用戶是否登陸,會發送ajax請求:http://localhost:8080/saiku/rest/saiku/sessionsession

尋找代碼,發現主要有兩部分組成:ui

controller:saiku-core/saiku-web/src/main/java/org/saiku/web/rest/resources/SessionResource.javaspa

Service:saiku-core/saiku-web/src/main/java/org/saiku/web/service/SessionService.javadebug

2、代碼分析

若是須要達到效果,第一次請求就要讓未登陸用戶默認登陸,那麼就簡單了。getSession就是對應ajax請求的方法,若是用戶沒有登陸,作一次登陸操做便可。

登陸操做的方法:sessionService.login(req, "admin", "admin")。時間關係寫的不優雅,莫怪!!!

3、從新編譯

這就不用說了,代碼已經提交到github,參考:https://github.com/lihehuo/saiku

相關文章
相關標籤/搜索