ArcGIS Server 地圖服務訪問許可權設定及ArcGIS Server token獲取
本文轉自 :https://blog.csdn.net/weixin_44011559/article/details/109463883 請支援原創!
一、地圖服務訪問許可權設定。
當我們釋出arcgis地圖服務後,由於涉密或者其他原因,不想讓所有人看到地圖服務。這時候我們可以對地圖設定許可權。怎末設定那?
進入你們arcgis管理。地址:
http://localhost:6080/arcgis/manager/index.html#
新建角色。
新建使用者。
新建成功。
角色與使用者之間關係:角色是指一組按功能、標題或某些其他屬性關聯在一起的使用者。
回到服務
點選某一個服務,“鎖”。
在可見角色裡面搜尋剛剛新建的角色名字。不搜尋,那個使用者新增按鈕不出來。新增角色abc。
然後選擇儲存。
許可權編輯完成。
當你進入站點
http://localhost:6080/arcgis/rest/services
發現剛剛設定許可權的那個地圖地圖服務SampleWorldCities不見了。說明設定成功了。
當你進入SampleWorldCities服務,發現需要登陸。
http://localhost:6080/arcgis/rest/services/SampleWorldCities/MapServer
你輸入剛剛建立的使用者名稱abc及密碼,就可以進入服務了。
登陸進來。
二、arcgis server 登陸token值的獲取。(手動實現)
http://localhost:6080/arcgis/rest/services/SampleWorldCities/MapServer
點選右上角Get Token
可以看到 有三種獲取方式。
開啟Help文件。(頁面上的Help超連結)
翻譯一下:
HTTP Referer方式:需要輸入訪問地圖服務頁面的URL。
得到:
IP方式:需要輸入訪問服務的主機ip地址(任意訪問地圖服務主機的ip地址,可以不是自己主機的ip)。
得到:
Request IP方式(預設的):
得到:
三、arcgis server 登陸token值的獲取。(程式碼實現,c#實現)
實現程式碼:
public string GetTokenTest() { string option = "HTTP Referer"; string tokenservice = null; switch (option) { case "HTTP Referer": tokenservice = "http://localhost:6080/arcgis/tokens?request=getToken&username=abc&password=aaaa&http referer=http://192.168.1.166&expiration=60"; break; case "IP": tokenservice = "http://localhost:6080/arcgis/tokens?request=getToken&username=abc&password=aaaa&ip=192.168.1.166&expiration=60"; break; case "Request lP": tokenservice = "http://localhost:6080/arcgis/tokens?request=getToken&username=abc&password=aaaa&expiration=60"; break; } WebRequest request = WebRequest.Create(tokenservice); WebResponse respost = request.GetResponse(); Stream resposeStream = respost.GetResponseStream(); StreamReader readStream = new StreamReader(resposeStream); string tokenstr = readStream.ReadToEnd(); //ResultMsg m = new ResultMsg(); //return new JavaScriptSerializer().Serialize(m); return tokenstr; }
執行結果:
HTTP Referer方式,程式碼獲取的token值。
token值:
dgC4wjgpi8ZWEzIBdi4ZYeeMlqhZDZa5ZaxFh6uK48g.
四、通過token訪問地圖服務
怎末通過token訪問設定訪問許可權的地圖?(不登陸)
方法:
http://localhost:6080/arcgis/rest/services/服務名/MapServer?token=token值
通過上面程式碼獲取的token值,
http://localhost:6080/arcgis/rest/services/SampleWorldCities/MapServer?token=dgC4wjgpi8ZWEzIBdi4ZYeeMlqhZDZa5ZaxFh6uK48g.