上一篇分析了介绍了如何简化和修改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
这样就实现了免登陆的匿名登录