本文介紹了通過nginx代理攔截請求進行全局訪問限制,分享給大家,具體如下:
運行環境:
項目中經常會用到權限管理,必然的就會存在權限的設定和驗證;對于登陸或者模塊的權限設定驗證,在項目中直接實現;那么問題出現了
1.訪問資源文件
2.多項目訪問權限
3.tomcat中虛擬目錄的訪問權限
公司項目中用到文件的上傳下載,在線預覽等功能;當然用戶在使用的時候,我們不可能把用戶的上傳的文件放在項目中,那么必然會用到
虛擬目錄來映射文件的位置,或者說跨域夸項目;如果沒有對這些進行一個訪問的權限的限制,那么你將可以不需要任何權限就可以訪問下載
服務器上的資源(只要路徑正確不需要任何權限),下面拿公司項目實際情況說明一下:
比如訪問: http://192.168.1.118/filefindPDFfilePath?filePath=root/(A)/上傳應用描述.docx 將出現
filefindPDFfilePath?filePath=root/(A)/上傳應用描述.docx http 請求會返回 /imgss/(A)/上傳應用描述.docx(imgss是tomcat server.xml配置的虛擬目錄)
打開瀏覽器我們直接訪問虛擬目錄:http://192.168.1.118/imgss/(A)/上傳應用描述.docx 將出現不需要任何權限可以預覽或者使用工具下載服務器資源
這會導致客戶在使用時,在稍有心思的人面前沒有任何安全可言
下面說一下如何解決這個問題:
第一種方案:設置tomcat全局過濾器,進行session驗證
1.項目中添加過濾器 UserLoginFilter.java(這里就不贅述了)
2.在tomcat 配置文件web.xml添加Filter
注意這里:applicaton/com.rhxy.service.UserLoginFilter 指向項目中的UserLoginFilter過濾器
這里需要說明一下。配置的攔截請求都是tomcat server.xml中配置的虛擬路徑
而所有的訪問資源的請求都是需要經過這里,所以直接設置虛擬路徑即可
啟動tomcat 重新部署項目;進行測試。結果如下
未登錄情況下
訪問:http://192.168.1.118/filefindPDFfilePath?filePath=root/(A)/12.png 打開tomcat 日志進行觀察:
觀察一下前臺:
未登錄情況下被成功被過濾掉了
新聞熱點
疑難解答