上一篇分析了介紹了如何簡化和修改saiku的界面【http://www.cnblogs.com/avivaye/p/4877882.html】
這一篇說明下如何去掉免登陸進入saiku 管理台
1、修改applicationContext-saiku-webapp.xml
<security:intercept-url pattern="/rest/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> <security:intercept-url pattern="/json/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
2、在saiku-beans.xml中添加allowAnonymous屬性
<bean id="sessionService" class="org.saiku.web.service.SessionService">
<property name="authenticationManager" ref="authenticationManager" />
<property name="allowAnonymous" value="true" />
</bean>
解釋:
① saiku的接口服務是通過jersey來加載的,在web.xml中有如下的配置
掃描的包:org.saiku.web 這個包下的rest服務接口在啟動時加載,訪問時加上路徑:/rest
<servlet> <servlet-name>jersey2</servlet-name> <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>org.saiku.web;com.fasterxml.jackson.jaxrs.json</param-value> </init-param> <init-param> <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>com.sun.jersey.config.feature.Trace</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>jaxrs.providers</param-name> <param-value>org.saiku.web.rest.SerializableProvider</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jersey2</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping>
② 為 匹配到 路徑為:/rest/** 的路徑 設置權限 IS_AUTHENTICATED_ANONYMOUSLY
表示如果用戶是匿名用戶或者是已授權的用戶 就能夠擁有訪問rest服務的資格
③ 通過 在sessionService 注入 <property name="allowAnonymous" value="true" />
這樣用戶在調用login服務的時候,會判斷是否是匿名用戶,如果是匿名用戶,就調用createSession的方法創建session
這樣就實現了免登陸的匿名登錄