本文轉自 :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.