sprintboot-learn(四)

請求轉發被Shiro攔截:

出自項目ch-pc_client(黨建微信客戶端):css

項目使用freemaker模板:(這裏的第三個接口不是請求轉發,請求轉發在後邊寫得有)html

這三個接口都是返回html頁面,實際上這裏的html並非freemaker模板,只是由於放在了模板文件夾裏面而被當成了模板來處理。模板的路徑爲WEB-INF/views/瀏覽器

資源文件夾有三個,statics,modules,partPcBuild.微信

partPcBuild這個文件夾是後來添加的,主要爲何要加這個。測試

Shiro的攔截裏面modules/**=anonui

當partPcBuild沒有配置成資源文件時。url

測試spa

①咱們訪問接口/modules/partPcBuild/index.html的時候走得接口是modules/{module}/{url}.html3d

我這個時候因爲modules/**是被放開的,因此訪問不會出任何問題。htm

②咱們在」/」這個接口中若是使用的是redirect。那麼其實也就跟①的方式同樣,是沒有任何問題的。

③當咱們使用forword

或者直接如圖的接口返回index頁面的時候,就會出問題了,頁面標題有了,可是頁面上空白的,頁面訪問的時候錯誤以下:

爲何會出現這個狀況?錯誤信息出現了login.html.

咱們來看錯誤信息:

大概意思是這個:資源是一個stylesheet,可是請求到的倒是一個頁面」http://.../login.html」.

意思就是在請求資源的時候被shiro攔截了,返回了login.html.

④這個時候咱們嘗試放開shiro的攔截,/**=anon,出現了新的錯誤:

Js,css找不到了。

爲何重定向能訪問到,請求轉發缺訪問不到?

緣由是這樣的:

①請求資源的時候使用的時瀏覽器上顯示的路徑來取的資源(④出現的問題,資源請求不到),請求轉發時,因爲請求路徑沒有改變,因此請求資源的直接被shiro攔截掉了,請求到的是一個login頁面(③出現的問題)

所以咱們須要作的事是:

①這裏將PC端的文件夾直接設置爲根目錄映射,這樣/js,/css就能夠直接訪問到partPcBuild文件夾下的資源了(解決了問題④)

②放開shiro對/js,/css等靜態資源的攔截。

當把partPcBuild配置成資源文件夾,shiro放開對靜態資源的攔截時:測試經過。

上面的測試,只是驗證了請求轉發請求資源時使用的是瀏覽器上的url。

請求轉發時瀏覽器上url1不會改變,而獲取靜態資源的時候取的路徑是瀏覽器上的url,訪問的頁面是轉發後的頁面url2,可是請求的資源的時候用的是url1.

開發中咱們須要作的事:

咱們總共兩步操做:將目標文件夾設置爲根/**,shiro放開對此路徑下的資源文件的攔截。

 

over~~~

相關文章
相關標籤/搜索