(二四)ArcGIS JSAPI 3.x 访问Portal有权限服务

前言

    在server和portal进行联合托管后,我们可以通过portal来管理服务。我们在调用server服务的时候。每次都会出现portal登录页。如下:
在这里插入图片描述

参考博客

https://blog.csdn.net/qq_40376439/article/details/104232430
https://blog.csdn.net/qq_40376439/article/details/104227280
https://blog.csdn.net/qq_40376439/article/details/104232445

解决思路

  1. 通过ArcGIS Portal中 generateToken来获取token
  2. 通过token来请求服务
解决方法

    首先我们需要通过portal提供的接口获取token:
    https://webadaptorhost.domain.com/webadaptorname/sharing/rest/generateToken

方法一

    根据获取到的token拼接到服务尾部,即可完成服务的访问

    http://***/arcgis/rest/services/test/wd/MapServer?token={token}

实例代码

let gConfig = {
      portal_arcgis_hosturl: "https://172.16.0.168/",
      portal_username: "portalxxx",
      portal_pwd: "xxx",
      ip: "172.26.38.130"
    }

  require([
    "esri/map",
    "esri/layers/ArcGISDynamicMapServiceLayer"
    ], function (Map, ArcGISDynamicMapServiceLayer) {
      const params = {
        'username': gConfig.portal_username,
        'password': gConfig.portal_pwd,
        'referer': gConfig.ip,
        'f': 'json'
      };
      $.ajax({
        type: "POST",
        url: gConfig.portal_arcgis_hosturl + 'portal/sharing/rest/generateToken',
        data: params,
        success: function ({token}) {
          console.log(token)
          let map = new Map("map");
          let simpleLayer = new ArcGISDynamicMapServiceLayer("https://gtkhgh01.arcgisonline.cn/server/rest/services/sd_2019_xzq/MapServer?token="+token);    
          console.log("https://ghssyrz02.arcgisonline.cn/server/rest/services/sd_2019_xzq/MapServer?token=" + token) 
          map.addLayer(simpleLayer);
        }
      })
    });
方法二

    使用ArcGIS API for JavaScript的esri/IdentityManager设置全局服务

let gConfig = {
      portal_arcgis_hosturl: "https://172.16.0.168/",
      portal_username: "portalxxx",
      portal_pwd: "xxx",
      ip: "172.26.38.130"
    }

  require([
    "esri/map",
    "esri/layers/ArcGISDynamicMapServiceLayer"
    ], function (Map, ArcGISDynamicMapServiceLayer) {
      const params = {
        'username': gConfig.portal_username,
        'password': gConfig.portal_pwd,
        'referer': gConfig.ip,
        'f': 'json'
      };
      $.ajax({
        type: "POST",
        url: gConfig.portal_arcgis_hosturl + 'portal/sharing/rest/generateToken',
        data: params,
        success: function ({token}) {
          console.log(token)
	  IdentityManager.registerToken({
          	server: "https://gtkhgh01.arcgisonline.cn/server/rest/services",
             	token: response.data.request_token
          });
          let map = new Map("map");
          let simpleLayer = new ArcGISDynamicMapServiceLayer("https://gtkhgh01.arcgisonline.cn/server/rest/services/sd_2019_xzq/MapServer");  
          map.addLayer(simpleLayer);
        }
      })
    });
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值