一、需求
項目中我們通常會遇到為外協團隊、合作友商提供地圖服務的需求,因此對地圖服務的權限需要做出分配。
二、現狀
主流的辦法是用用戶和角色來控制,通常使用代理方式和用戶名密碼的方式來實現。
三、思路
另一種方法是使用 token ,token 生成的方式有三種,分別是對某一 web 應用、固定 IP 、以及客戶端 IP 。
可以看出最靈活的方法是用客戶端 IP 生成 token 。
四、方法
1. 后台設置
(1)ArcGIS Server Manager > 安全性 > 角色 > 新建角色
(2)ArcGIS Server Manager > 服務 > 編輯權限 > 私有
(3)ArcGIS Token Service 調試
地址為:http://localhost:6080/arcgis/tokens/generateToken
通常情況下我們需要在這個頁面拿到動態生成的 token,但是集成在項目中很不方便,因此觀察獲取 token 的請求如下:
http://localhost:6080/arcgis/tokens/generateToken?password=***&f=html&username=***&client=***&referer=&ip=&expiration=***&encrypted=true
我們就會得到一個動態生成的 token 。
2. 項目中集成
(1)示例
var getTokenUrl = "http://localhost:6080/arcgis/tokens/generateToken?password=***&f=html&username=***&client=***&referer=&ip=&expiration=***&encrypted=true"; $.ajax({ url: getTokenUrl, success:function(res){ var layer = new esri.layers.ArcGISDynamicMapServiceLayer("http://localhost:6080/arcgis/rest/services/SampleWorldCities/MapServer?token="+res); map.addLayer(layer); } });
五、總結
這個方法不需要下載代理文件,更輕便,關於 token 的有效期也可以根據自己的需求來設置。