• Cesium数据,后端权限验证(实现类似cesium ion的token权限验证)


    实现类似cesium ion的token权限验证,将token写入前端header发送get请求

    0. 前提

            环境:前端vue3+element-plus+cesium,后端django+DRF可加nginx

            需求:不同用户上传自己的数据(尤其是3D数据),然后其他人不可访问,这就涉及到权限了。如果已有系统实现了基于RBAC的用户注册登录等功能,那么只需要在这个系统上开发即可!

            注意,注意,注意: Cesium.Cesium3DTileset(url:"./data/tileset.json"),url会自动把部署的ip加到url前面http://localhost/data/tileset.json,本质上这是Get请求,可以传参的,而且cesium ion应该也是get请求,那么这里的url后面可以加“?token=参数”,这样就有希望做后端的数据权限验证了[PS: 最新好消息是cesium支持将token放到header中,这样就和web服务的请求一样了,详见下面代码]

            vue3+cesium配置教程

    1. 操作

            【前端】直接在cesium中的url中后面加"?token=***",就可以了!即:Cesium.Cesium3DTileset(url: "http://ip/data/tileset.json?token=***"),这样就可以发送get请求参数了。不推荐上面这种写法,而是使用Cesium.Resource函数封装url、header、token等参数,API使用查看:https://cesium.com/learn/cesiumjs/ref-doc/Resource.html?classFilter=resource

            【后端】可直接在后端新建files文件夹,然后暴露到公共url中,并且在url中正则匹配获取token,然后在对应的类函数校验即可!又或者直接暴露url,然后在view中进行token的校验,这样就不需要在url中正则匹配了,获取对应的header参数即可,更加方便,也是最正确的做法。

            若使用nginx,则简单的发布数据http服务,是公共的,任何人都可访问。不符合权限校验,可以使用nginx的第三方库:ngx_http_auth_request_module模块,然后设置2个地方:针对json/JSON/glb/GLB/b3m/B3DM/gltf/GLTF,走单独的auth流程;然后auth类似反向代理,这里就跳转指向到后端的API中,然后就可以把获取得到的token进入后端进行校验。

    2. 省事的操作

            【针对90%的普通用户-尤其是政府单位】先将nginx设置防盗链(用于请求头限制ip-即部署前端的ip,但是可以伪造ip欺骗),并同时设置反向代理;然后将这个数据url与用户对应存入数据库,这样登录系统后(其他电脑ip)访问部署的前端-后端,前端部署电脑ip是被nginx允许的,所以就可以通过系统跳转访问了。但是本质依旧没有权限限制,因为防盗链可以被欺骗。但可以让90%的用户按照操作登录系统来进行。。。因为他们不懂

    3.一些见解

            对于3dtiles不管是3D矢量,倾斜摄影,一般常用的方式是nginx做静态代理http服务,因为3D的是不像2D的经常动态更新的,3D的更新是重新生成!所以nginx适合。

            注意点:对于3dtiles小文件数量,如果是百万级数量,nginx是可以代理的。但是超过1000万个小文件,linux的inode吃不消,所以nginx此时也不行,那么就建议使用mongodb,采用类似文件夹的形式进行存储,然后后端python按照url读取!对于省级的数据尤其是影像切片(1-18级,一般很少全部使用)切片产生2000万,更是推荐使用MongoDB了,搜索一下学习。

  • 相关阅读:
    【Vue】vue先转化文章内容再去除标签 vue filters过滤器去除标签 js提取文字内容
    java毕业设计网上汽车售票系统源码+lw文档+mybatis+系统+mysql数据库+调试
    【MATLAB教程案例17】基于NSGAII多目标优化算法的matlab仿真及应用
    使用canal解决Mysql和Redis数据同步(TCP)
    JAVA高级教程Java TreeMap表达式(8)
    【Visual Studio 2022】VS2022安装教程
    产品经理相关的学习网站
    python自动化测试—Python自动化框架及工具
    Elasticsearch7.2.1 部署docker
    基于未来搜索优化的BP神经网络(分类应用) - 附代码
  • 原文地址:https://blog.csdn.net/LEILEI18A/article/details/127837000