1. 程式人生 > 其它 >ArcGIS Server 地圖服務訪問許可權設定及ArcGIS Server token獲取

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.