JwtFilter 解決其中的跨域問題

2021-10-16 01:32:41 字數 1465 閱讀 8629

第五步:定義jwt的過濾器jwtfilter。

這個過濾器是我們的重點,這裡我們繼承的是shiro內建的authenticatingfilter,乙個可以內建了可以自動登入方法的的過濾器,有些同學繼承basichttpauthenticationfilter也是可以的。

我們需要重寫幾個方法:

createtoken:實現登入,我們需要生成我們自定義支援的jwttoken

onaccessdenied:攔截校驗,當頭部沒有authorization時候,我們直接通過,不需要自動登入;當帶有的時候,首先我們校驗jwt的有效性,沒問題我們就直接執行executelogin方法實現自動登入

onloginfailure:登入異常時候進入的方法,我們直接把異常資訊封裝然後丟擲

prehandle:***的前置攔截,因為我們是前後端分析專案,專案中除了需要跨域全域性配置之外,我們再***中也需要提供跨域支援。這樣,***才不會在進入controller之前就被限制了。

跨域下面我們看看總體的**:

@component

public

class

jwtfilter

extends

authenticatingfilter

return

newjwttoken

(jwt);}

@override

protected

boolean

onaccessdenied

(servletrequest servletrequest, servletresponse servletresponse)

throws exception

else

}// 執行自動登入

return

executelogin

(servletrequest, servletresponse);}

@override

protected

boolean

onloginfailure

(authenticationtoken token, authenticationexception e, servletrequest request, servletresponse response)

catch

(ioexception e1)

return

false;}

/** * 對跨域提供支援

*/@override

protected

boolean

prehandle

(servletrequest request, servletresponse response)

throws exception

return

super

.prehandle

(request, response);}

}

跨域的解決

同時滿足以下兩個條件的 1.請求方式為 head get post 2.請求頭只有 後台只需要設定響應的頭部 access control allow origin 非簡單請求在正式地請求前,都會傳送乙個options預檢請求,瀏覽器檢查響應的header,決定是否同意cors請求 後台伺服器只需要...

windows視窗多執行緒 其中遇跨執行緒的使用控制項

1.在跨執行緒使用控制項時,會遇到執行緒安全使用控制項 如何處理呢 首先定義乙個處理的 委託 來處理該問題 在判斷 控制項 的invokerequired 必須呼叫 如果為真 那麼 初始化委託 在在當前執行緒呼叫委託 this.invoke 委託,new object 例 private deleg...

解決跨域的方式

jsonp 處理跨域的原理由於 script 標籤不受瀏覽器同源策略的影響,允許跨域引用資源。因此可以通過動態建立 script 標籤,然後利用 src 屬性進行跨域,這也就是 jsonp 跨域的基本原理。優點 缺點 示例 後端 expressconst express require expres...