登录日志请求访问者地址 bug修复

pull/2/head
李强 2021-03-21 22:02:08 +08:00
parent b4a98cb126
commit 67fe9a49b2
2 changed files with 12 additions and 3 deletions

View File

@ -33,7 +33,7 @@ class ApiLoggingMiddleware(MiddlewareMixin):
# 请求含有password则用*替换掉(暂时先用于所有接口的password请求参数) # 请求含有password则用*替换掉(暂时先用于所有接口的password请求参数)
if isinstance(body, dict) and body.get('password', ''): if isinstance(body, dict) and body.get('password', ''):
body['password'] = '*' * len(body['password']) body['password'] = '*' * len(body['password'])
if not hasattr(response,'data'): if not hasattr(response, 'data') or not isinstance(response.data, dict):
response.data = {} response.data = {}
info = { info = {
'request_ip': getattr(request, 'request_ip', 'unknown'), 'request_ip': getattr(request, 'request_ip', 'unknown'),

View File

@ -6,6 +6,7 @@ import logging
from django.contrib.auth.models import AbstractBaseUser from django.contrib.auth.models import AbstractBaseUser
from django.contrib.auth.models import AnonymousUser from django.contrib.auth.models import AnonymousUser
from django.core.cache import cache
from django.urls.resolvers import ResolverMatch from django.urls.resolvers import ResolverMatch
from rest_framework.authentication import BaseAuthentication from rest_framework.authentication import BaseAuthentication
from rest_framework.settings import api_settings as drf_settings from rest_framework.settings import api_settings as drf_settings
@ -165,12 +166,20 @@ def get_login_location(request, *args, **kwargs):
""" """
import requests import requests
import eventlet # 导入eventlet这个模块 import eventlet # 导入eventlet这个模块
request_ip = get_request_ip(request)
# 从缓存中获取
location = cache.get(request_ip)
if location:
return location
# 通过api 获取再缓存redis
eventlet.monkey_patch(thread=False) # 必须加这条代码 eventlet.monkey_patch(thread=False) # 必须加这条代码
with eventlet.Timeout(2, False): # 设置超时时间为2秒 with eventlet.Timeout(2, False): # 设置超时时间为2秒
apiurl = "http://whois.pconline.com.cn/ip.jsp?ip=%s" % get_request_ip(request) apiurl = "http://whois.pconline.com.cn/ip.jsp?ip=%s" % request_ip
r = requests.get(apiurl) r = requests.get(apiurl)
content = r.content.decode('GBK') content = r.content.decode('GBK')
return content.replace('\r', '').replace('\n', '') location = content.replace('\r', '').replace('\n', '')
cache.set(request_ip,location, 8640)
return location
return "" return ""