我現在正在使用spring cloud gateway,從spring gateway的過濾器中我可以得到來自org.springframework.http.server的ServerHttpRequest,像這樣:
ServerHttpRequest request = (ServerHttpRequest) exchange.getRequest()。
但是這個公共庫函式只接受HttpServletRequest,它在javax.servlet.http包中,是否可以翻譯這兩種型別的物件? 或者我必須用不同型別的引數寫一個多載函式? 我應該用同一個函式實作兩次?BTW,這是我的公共函式:
public static void handleLoginCheck(HttpServletRequest httpServletRequest) {
AutoHeaderInfoRequest autoHeaderInfoRequest = AuthUtil.getAutoHeaderInfoRequest(httpServletRequest)。
if (autoHeaderInfoRequest.getAccessToken() == null) {
throw ServiceException.NOT_LOGGED_IN_EXCEPTION。
}
if (!AuthUtil.verifyAccessToken(autoHeaderInfoRequest.getAccessToken())) {
throw GlobalException.ACCESS_TOKEN_INVALID_EXCEPTION。
}
setRequestGlobalHeader(autoHeaderInfoRequest)。
}
這個函式和所有被呼叫的函式都使用HttpServletRequest。
uj5u.com熱心網友回復:
根據Spring Docs :
ServerHttpRequest介面的實作是基于HttpServletRequest介面。
現在,有一個名為ServletServerHttpRequest的類,它實作了ServerHttpRequest介面,它也有一個公共方法getServletRequest()來獲取實際的HttpServletRequest。
把你的實作改成這樣:
if(exchange.getRequest() instanceof ServletServerHttpRequest) {
ServletServerHttpRequest request = (ServletServerHttpRequest) exchange.getRequest()。
HttpServletRequest httpServletRequest = request.getServletRequest()。
}
更多內容請參考檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/324175.html
標籤:
