Porównaj ceny domen i usług IT, sprzedawców z całego świata

Jak uzyskać adres IP klienta w Spring Bean


Mam definicję Boba na wiosnę.
<beans>
<bean id="remoteService" class="edu.wustl.catissuecore.CaTissueApplictionServicImpl"/>
</beans>

Czy istnieje sposób na uzyskanie adresu IP klienta w tej klasie? Podobny do tego, co jest dostępne w serwlecie
request.getRemoteAddr ()
;
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Najłatwiejszym (i najbrzydszym) podejściem jest użycie
RequestContextHolder
:
String remoteAddress = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes())
.getRequest().getRemoteAddr();

Nie wiedząc więcej o swoim Bobie i jego powiązaniach, to najlepsze, co mogę zasugerować. Jeśli Twój bean jest kontrolerem (podklasą
AbstractController
lub z adnotacją
@Controller
), powinien mieć bezpośredni dostęp do obiektu żądania.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Najlepszym sposobem uzyskania adresu IP klienta jest iteracja po nagłówkach
private static final String[] IP_HEADER_CANDIDATES = {
"X-Forwarded-For",
"Proxy-Client-IP",
"WL-Proxy-Client-IP",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_X_CLUSTER_CLIENT_IP",
"HTTP_CLIENT_IP",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_VIA",
"REMOTE_ADDR" };public static String getClientIpAddress(HttpServletRequest request) {
for (String header : IP_HEADER_CANDIDATES) {
String ip = request.getHeader(header);
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
}
return request.getRemoteAddr();
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zbuduj ten:
@Autowired(required = true)
private HttpServletRequest request;

i użyj w ten sposób:
request.getRemoteAddr()

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się