Sa-Token icon indicating copy to clipboard operation
Sa-Token copied to clipboard

客户端的IP怎么获取?

Open HarryFQG opened this issue 8 months ago • 2 comments

对以下问题有疑问:

现在要做一个IP黑名单功能,防止被恶意打爆或持续访问特殊服务接口,好像没看到获取IP的能力?

< 备注:请尽量详细描述问题所在 >

HarryFQG avatar Apr 25 '25 18:04 HarryFQG

这个应该不用基于任何框架吧,自己就可以用aop切入controller使用,我这边主要是为了打印日志而获取请求远程ip的,如下:

/**
     * 使用 Nginx 进行反向代理,这个方法主要是用来获取远程 IP
     *
     * @param request 当前请求
     */
    public String getRemoteIp(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (StrUtil.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (StrUtil.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (StrUtil.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }

KairosSun avatar Apr 26 '25 00:04 KairosSun

........ 我真的不想解决这样的问题.我只想吐槽: 这就跟我有一台车, 现在突然尿急就打电话问4s客服 你这车好像没有撒尿的地方啊.请问怎么撒! 一样的既视感.

floatime avatar May 22 '25 08:05 floatime

此非sa-token的工作范畴, 需要自己实现, KairosSun 已经提供了方案的一部分, 请参考

ly-chn avatar Jul 28 '25 01:07 ly-chn