硕迪数据分析系统本身包含一个权限管理控制的门户模块,但是在实际应用中很多是作为报表或者大屏页面资源独立部署一个应用,然后通过超链接调用。此时需要进行访问权限控制集成。下面介绍一下硕迪数据分析系统的访问权限集成方式。
1、首先将无门户模块的硕迪数据分析系统的web应用部署在tomcat或其他j2ee服务器。
2、编写过滤器代码过滤对报表等资源的请求,示例代码如下
package com.report.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
public class ReportFilter implements Filter {
String token=null;
String key = "36E8A258B31F8B8425900D34AE650842";
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//如果需要配置密钥可读取自定义配置
key=filterConfig.getInitParameter("key");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
String token=servletRequest.getParameter("token");
HttpServletResponse htteResp=(HttpServletResponse)servletResponse;
if(token==null){
htteResp.sendError(400,"token为空,无访问权限!");
return;
}
boolean legitimate = true;
//不同系统验证token不同,下面写自己的验证token的代码
//legitimate = AuthUtil.checkToken(token);
if(legitimate){
filterChain.doFilter(servletRequest,servletResponse);
}else{
htteResp.sendError(400,"token不合法,无访问权限!");
return;
}
}
@Override
public void destroy() {
}
}
3、将代码编译打包为reportFilter.jar,并拷贝到报表服务的web应用目录lib下
4、修改web.xml 添加filter配置,key配置秘钥,如下:
<filter>
<filter-name>reportFilter</filter-name>
<filter-class>com.report.filter.ReportFilter</filter-class>
<init-param>
<param-name>key</param-name>
<param-value>36E8A258B31F8B8425900D34AE650842</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>reportFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
5、调用端访问报表的时候需包含token。示例如下:
http://localhost:8080/report/reportJsp/showReport.jsp?rpx=test1.rpx&token=bc627c954b2cfdd9cc03cd31820062f7