寫在前面:
所用geoserver 版本為 2.13.2, tomcat 8,jdk 64位環境
問題產生的背景:使用 geoserver 發布wmts服務,用arcgis for js 4.x 版的 WebTileLayer 類加載,在網頁端彈出輸入用戶名和密碼的提示框,如下圖:
按照提示輸入登陸geoserver的用戶名和密碼即可顯示請求的數據,但在實際使用過程中,不可能要求地圖服務使用者每次請求數據時,都輸入可訪問該資源的geoserver用戶名和密碼。
心路歷程(重解決問題的,請略過):有問題,找度娘,問了度娘半天,始終也沒有找到合適的方法,於是靜下心來,仔細思考:通過網頁請求單張圖片,沒有其他多余的請求,為什么還要輸入geoserver的用戶名和密碼,於是我猜想,很可能是geoserver的過濾器或攔截器,攔截了請求,按照這個思路,我想是否可以關閉geoserver請求的過濾器或攔截器,達到請求wmts服務時,不再攔截,於是,繼續問度娘,找到這篇文章:https://www.jianshu.com/p/8ef9bfdd5ef2,由於這篇文章的啟發,開始尋找關閉權限認證的方法,不料也沒找到,沒辦法,還得靠自己。想到 geoserver 的權限設置管理部分在管理界面的security部分,於是對每一項都進行了查看,看了幾遍,沒看出什么名堂,沒有理解Authentication頁面內的Authentication Filters、Filter Chains和Filter chain testing等部分具體內容,就開始對可點擊和設置的內容進行測試,再次看到Filter chain testing時,突然想到是否可以測試一下請求單張圖片的wmts地址,不管了,先測再說,經測試,發現在Responsible chain標簽下的文本框出到了default,和上面Filter Chains表中的name列的最后一項一致,難道是……,此處略過100字,哈哈,閑言少敘,回歸正題。
解決方法
1、關閉請求過濾
經過測試,該方法可行,但不安全,第一步找到要關閉過慮項,如下圖:
點擊右側過濾項的名稱,打開下圖,勾選 Disable security for this chain 復選框:
之后,單擊該頁面的close按鈕,返回 Authentication 頁面,之后,再依次設置其他過濾項,都設置完之后,單擊Authentication 頁面的保存按鈕,即可達到關閉過濾器的目的,再測試請求wmts服務的鏈接,沒有再彈出用戶名和密碼的彈出框。
2、在請求wmts服務之前,先登陸geoserver服務器
該方法還沒有測試,不過應該可以實現,通過閱讀geoserver的幫助文檔,geoserver服務器可以通過Basic Authentication request 進行驗證,所以,測試成功后,再補充
各們親,have fun