第五步:定義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...