ArcGIS for JavaScript获取token

来源:转载

当我们的服务ARCGIS发布到外网,但是我们又不希望其他人员访问我们的服务。这时我们就需要对服务的请求进行验证,类似于使用用户名和密码进行登录。相当于先用进行验证,验证成功再响应服务请求。这里就用到了token

一、token信息参数


token信息详见http://resources.arcgis.com/en/help/arcgis-rest-api/index.html#//02r3000000ts000000

PS:需要注意的是请求token过期时间设置expiration参数,单位分钟,但是时间并不是随意设置,token最长时间由服务端控制,当设置的时间分钟数超过最长有效时间时,则以限制最长时间计算

二、token获取

//获取token方式function getToken(url){ var data={f: 'json',username:'username',password:'password',client:'requestip',referrer:'',ip:'',expiration:60*24*10//单位:分钟 }; $.ajax({ url: url, type: 'POST',//POST请求 data:data, xhrFields: { withCredentials: false }, crossDomain: true, success: function(result) {var json=jQuery.parseJSON(result);alert("token信息:"+json.token); } });}
获取返回的结果如下:
token为获取的token信息,expires为到期的时间,采用的是时间戳格式。

三、采用代理的方式动态获取token信息

在https://github.com/Esri/resource-proxy/releases 下载代理页面,我们只需要proxy.ashx和proxy.config文件,也可选择本文末尾作者提供的实例(建议使用);

4.进入Web工程,将proxy.ashx和proxy.config添加到项目目录,最好和JS文件在同一目录;

5.修改proxy.config:

<serverUrl url ="http://192.168.1.6:6080/arcgis/rest/services" matchAll="true" dynamicToken="true" host="192.168.1.6:6080" userName="yangtao" password="262728"></serverUrl>

修改url中ip为GIS服务器ip;host也为GIS服务器ip;userName为在Server里面添加的用户;password为用户密码。

6.在require中设置代理:

esriConfig.defaults.io.proxyUrl = "proxy.ashx";esriConfig.defaults.io.alwaysUseProxy = true;

alwaysUseProxy为true表示始终使用代理,在测试过程,若底图使用ersi地图,出现错误,用天地图则跳过代理,实现只是对服务使用代理。

 

目录结构:

index.html、proxy.confog和proxy.ashx统计目录,也可以不同级。

proxy.config配置实例:

<serverUrl url ="http://192.168.1.6:6080/arcgis/rest/services" matchAll="true" dynamicToken="true" host="192.168.1.6:6080" userName="yangtao" password="262728" ></serverUrl>

客户端调用实例:

require(["esri/map", "esri/config", "esri/layers/ArcGISDynamicMapServiceLayer", "extras/TDTRoadLayer", "dojo/domReady!"], function (Map, esriConfig, ArcGISDynamicMapServiceLayer, TDTRoadLayer) { esriConfig.defaults.io.proxyUrl = "proxy.ashx"; esriConfig.defaults.io.alwaysUseProxy = true; var map = new Map("map", { center: [104, 30], zoom: 8 }); var layer = new TDTRoadLayer(); map.addLayer(layer); var dynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer("http://192.168.1.6:6080/arcgis/rest/services//test/china/MapServer"); map.addLayer(dynamicMapServiceLayer); });

 

 注:

1.对于下载的附件,需要修改proxy,config里面的参数(url、host、userName、password四个参数);

2.修改index.html中ArcGISDynamicMapServiceLayer服务地址为正确的可访问服务地址。


分享给朋友:
您可能感兴趣的文章:
随机阅读: