• 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

  • 相关阅读:
    网络IO之阻塞、非阻塞、同步、异步总结
    C语言栈与调用惯例
    多个文件目录下Makefile的写法
    利用 mount 指令解决 Read-only file system的问题
    error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
    Centos6.4下安装protobuf及简单使用
    Centos下修改启动项和网络配置
    Centos下配置单元测试工具gtest
    Centos配置为驱动程序开发环境
    Centos安装gcc及g++
  • 原文地址:https://www.cnblogs.com/shuenjian901/p/3473850.html
Copyright © 2020-2023  润新知