管理后台添加了 IP 归属地拦截
在使用 IP 归属地这么长时间,我发现这个作用越来越大了。今天将源文件重新维护了下,主要是规范省份名称,例如河南调整为河南省,内蒙古调整为内蒙古自治区等,调整之后,源文件明显增大了尺寸,但是为了严谨,是值得的。
因为我的后台,访问地点是固定的,通过白名单设置 IP 太麻烦,就用 IP 归属地进行拦截。
我精确到省份,其实可以精确到市,我的 IP 库精确到市。
添加还是非常简单的,利用开放接口即可。
我这里不用使用,可以直接调用函数,如果是两个服务,就需要开放接口了。
先获取归属地,归属地格式,国家|省份|城市,国外的只显示国家名,其它项为 0,返回字符串,以|分割。
取到归属地字符串后,切分字符串为数组,取出省份。
strArr := strings.Split(str, "|")
n := len(strArr)
// 这个情况基本不存在,源文件中以0作为占位符。
if n != 3 {
return ""
}
return strArr[1]
归属地数组索引 0 是国家,1 是省份,2 是城市。
现在,使用获取到的省份信息比对。
以前,是直接将省份字段和“河南”比较,现在优化了一下,包含就可以。防止数据文件出现河南省这样的情况导致问题。
ok := strings.Contains(province, "河南")
if !ok {
c.JSON(http.StatusOK, ErrWxResp("拒绝登录-1", nil))
return
}
这样,归属地不是河南将不允许登录。