SpringBoot 获取当前登录用户IP

控制器方法:

@RequestMapping(value = "/getIp", method = RequestMethod.POST)
    @ResponseBody
    public String getIp(HttpServletRequest request) {
        return IpUtil.getIpAddr(request);
    }

工具类方法:

public class IpUtil {
    public static String getIpAddr(HttpServletRequest request) {
        String ipAddress = null;
        try {
            ipAddress = request.getHeader("x-forwarded-for");
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getHeader("Proxy-Client-IP");
            }
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getHeader("WL-Proxy-Client-IP");
            }
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getRemoteAddr();
                if (ipAddress.equals("127.0.0.1")) {
                    // 根据网卡取本机配置的IP
                    InetAddress inet = null;
                    try {
                        inet = InetAddress.getLocalHost();
                    } catch (UnknownHostException e) {
                        e.printStackTrace();
                    }
                    ipAddress = inet.getHostAddress();
                }
            }
            // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照‘,‘分割
            if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
                                                                // = 15
                if (ipAddress.indexOf(",") > 0) {
                    ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
                }
            }
        } catch (Exception e) {
            ipAddress="";
        }
        // ipAddress = this.getRequest().getRemoteAddr();

        return ipAddress;
    }
}
时间: 2024-11-10 13:53:15

SpringBoot 获取当前登录用户IP的相关文章

获取当前登录用户的IP地址代码

1 *&---------------------------------------------------------------------* 2 *& Report YDEMO_RICK 3 *& 4 *&---------------------------------------------------------------------* 5 *& 6 *& 7 *&-----------------------------------

Spring Security应用开发(12) 获取已登录用户信息

1.1. 获取已登录用户信息 在使用Spring Security的应用程序中,可以通过SecurityContext接口获取到已经登录的用户的信息.SecurityContext接口的实例通过SecurityContextHolder的静态方法getContext()获取. 通过SecurityContext可以获取到Authentication接口的实例,而通过Authentication接口可以获取到: principal:主角,通常是一个UserDetails接口的实例,而默认就是Use

C4C和CRM里获取当前登录用户分配的Organization Unit信息

C4C 如何查看某个用户分配的组织单元ID: 在Employee的Organization Data区域内看到分配的组织名称,如下图红色下划线所示: 现在的需求就是使用ABSL获取当前登录用户分配的Organization Unit信息,例如用WANGJERRY37登录,则取出下图显示的Department name PMLS: 具体实现:新建一个custom BO,使用字段DepartmentName存储这个待取的值: 然后创建AfterLoading script file,使用如下代码:

java获取登录用户ip地址

public class IPUtil { /** * 获取ip * @param request * @return */ public static String getIp(HttpServletRequest request) { if (request == null) return ""; String ip = request.getHeader("X-Requested-For"); if (StringUtil.isEmpty(ip) || &qu

获取登录用户ip

public static String getIpAddr(HttpServletRequest request) { String ipAddress = null; try { ipAddress = request.getHeader("x-forwarded-for"); if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {

快速获取游客和用户IP的具体实现方法

废话不多说,贴代码! <pre name="code" class="html"><!DOCTYPE html> <html> <head> <title>Get my IP</title> </head> <body> <a href="http://www.whatsmyip.us">whatsmyip</a> My Rea

SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递

实现思路: 1:准备一个ThreadLocal变量,供线程之间共享. 2:每个微服务对所有过来的Feign调用进行过滤,然后从请求头中获取User用户信息,并存在ThreadLocal变量中. 3:每个微服务在使用FeignClient调用别的微服务时,先从ThreadLocal里面取出user信息,并放在request的请求头中. 4:封装为一个注解,在启动类上标记即可. 代码样例: 1:ThreadLocal工具类 :UserInfoContext package com.test.domi

【转】SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递

实现思路: 1:准备一个ThreadLocal变量,供线程之间共享. 2:每个微服务对所有过来的Feign调用进行过滤,然后从请求头中获取User用户信息,并存在ThreadLocal变量中. 3:每个微服务在使用FeignClient调用别的微服务时,先从ThreadLocal里面取出user信息,并放在request的请求头中. 4:封装为一个注解,在启动类上标记即可. 代码样例: 1:ThreadLocal工具类 :UserInfoContext package com.test.domi

c# 矿山企业用户 control层 从获取当前登录用户的code 以此作为判断条件 循环找出code对应的数据

1 public ActionResult Index(ReserveInfoRequest request) 2 { 3 4 List<string> MineList= this.AccountService.GetPermMineList(this.CookieContext.UserId); 5 6 var result = this.ReserveService.GetReserveList(request); 7 8 List<ReserveInfo> Items =