request.getRemoteUser() Spring Security做權限控制后


一、

request.getRemoteUser();//獲取當前緩存的用戶,比如Spring Security做權限控制后就會將用戶登錄名緩存到這里 request.getRemoteAddr();//獲取客戶端IP,需要注意的是獲取到的是直接面向的IP地址,並不是經過代理等處理的原始地址

request.getRemotePort();//獲取服務端訪問端口

request.getRemoteHost();//獲取服務端地址

即當前路徑為 request.getRemoteHost()+":"+request.getRemotePort()

 

 

二、getRemoteAddr()與 getRemoteHost()的區別小結

getRemoteAddr():獲得客戶端的IP地址 
getRemoteHost():獲得客戶端電腦的名字,若失敗,則返回客戶端電腦的IP地址 

InetAddress ia = InetAddress.getLocalHost(); 

String iad = ia.getHostAddress();//主機IP 
String ias = ia.getHostName();//主機名 

請問我在JSP頁面中使用如下語句: 
System.out.println("request.getRemoteAddr(): " + request.getRemoteAddr()); 
System.out.println("request.getRemoteHost(): " + request.getRemoteHost()); 
得到的結果相同(局域網內試驗的結果)。 
那么getRemoteAddr()和getRemoteHost()到底有什么區別? 

前一個是獲得客戶端的ip地址 
后一個是獲得客戶端的主機名 
所以用前一個。 

使用request.getRemoteAddr()取得client的ip有問題 

request.getRemoteAddr()可以取得用戶端ip ,但我試了的結果是 0:0:0:0:0:0:0:1 ,請問是哪裡出了問題,要如何解決呢?謝謝各位回答。 

這可能是由於你並沒有連入互聯網或局域網沒有獲得ip,也有可能是你的上網的方式有問題,我也曾經出過這樣的問題,不過換到公司使用局域網測試ip就顯示出來了 

--------------------------------------------------------------- 

在servlet中怎樣能取到真實的客戶端ip地址? 
如果客戶端來自服務器以外的網段,request.getRemoteAddr得到的只是那個客戶端網關(代理)的ip,沒有辦法取到真實的客戶端ip嗎? 

#當用戶使用代理或者是局域網訪問你的應用程序,你用request.getRemoteAddr()方法返回的是代理的地址或是局域網網關的地址.

#request.getRemoteAddr()只能獲取第一層,如果獲取的地址是內網地址,可能是路由器中轉了
詳細出處參考:http://www.jb51.net/article/21498.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM