[saiku] 免登陆进入管理后台

时间:2023-03-08 16:14:54

上一篇分析了介绍了如何简化和修改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

这样就实现了免登陆的匿名登录