地理数据支撑平台 开发技术
1、概述
主要提供数据服务和服务代理,支持各系统的正常运作。动态管理各种在线地图服务,本地地图服务。对各服务请求进行统计,分析。对用户进行管理,并分配角色授权。
2、登录截图
3、管理截图
4、基本功能
1、用户的登陆注册(服务端获取验证码)
2、App用户的登录注册(APP端获取验证码)
3、用户角色动态授权(实时授权,每个接口验证权限,更改接口权限,立即生效)
4、多数据源(sqlite,mysql)访问
5、服务器端口扫描和WHOIS查询
6、地图图层的统一管理(建表分类管理,分类请求,统计)
7、地理坐标系管理
8、地图图层的动态代理(对于非x,y,z请求的图层进行代理,如wms,行列号偏移,请求跨域,支持HTTP和HTTPS请求)
9、服务器信息监控(磁盘、CPU、内存)
10、APP实时位置上传
11、图集管理(天地图图集)
12、图集管理及文件上传
13、地理信息导航数据管理
14、IP黑名单管理
15、留言管理
16、日志管理
17、应用列表管理
18、接口管理及统计
- 重要功能实现思路
1、用户角色动态授权
基于SpringSecurity完成,通过Mysql存储用户表和角色表,角色控制用户可以访问的接口,权限可以继承(管理员>用户>匿名),集成也是动态的,根据角色ID可以新建角色加入到继承体系中。
用户访问接口—先验证权限,需要权限跳转到登陆界面。对于已登录的用户,先从数据库获得接口列表,看该接口是否授权。(AccessDecisionManager,FilterInvocationSecurityMetadataSource,UserDetailsService联合使用,稍后详解说下)
2、地图图层的动态代理
地图图层列表存放在数据库中,由于地图切片访问频繁,所有把图层的代理映射(真实地址、代理地址)存放在Redis中,代理过程中读取redis,通过后台接口操作redis的读写和数据更新。
用户访问代理图层-切片坐标发到服务器端,服务器判断图层类型,读取redis获取真实地址,拼接地址,发送HTTP请求获取数据。数据接收完成,转发给用户,代理结束。
-
IP黑名单管理
在FilterChain,作为统一入口,所有的访问均从此处验证(日志、接口访问统计和验证码均在此处设置)。获取IP于Redis存放的黑名单进行对比,控制用户访问。
6、附言
SpringBoot提供后台开发框架
SpringSecurity提供用户动态授权
Redis+Mysql提供地图切片请求的代理转发(支持http、https)
Freemaker模板引擎提供前端页面渲染、页面嵌套、页面压缩和根据权限配置页面的功能
Httpclient提供服务代理转发功能
高德Android SDK提供APP开发组件