This commit is contained in:
yumoqing 2023-10-25 11:48:11 +08:00
parent 335d4daf8d
commit dab165396d

View File

@ -15,6 +15,13 @@ from appPublic.jsonConfig import getConfig
from appPublic.rsawrap import RSA from appPublic.rsawrap import RSA
from appPublic.app_logger import AppLogger from appPublic.app_logger import AppLogger
def get_client_ip(obj, request):
ip = request.headers.get('X-Forwarded-For')
if not ip:
ip = request.remote
request['client_ip'] = ip
return ip
class AuthAPI(AppLogger): class AuthAPI(AppLogger):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
@ -35,13 +42,6 @@ class AuthAPI(AppLogger):
self.getPrivateKey() self.getPrivateKey()
return self.rsaEngine.decode(self.privatekey,cdata) return self.rsaEngine.decode(self.privatekey,cdata)
def get_client_ip(self, request):
ip = request.headers.get('X-Forwarded-For')
if not ip:
ip = request.remote
request['client_ip'] = ip
return ip
async def setupAuth(self,app): async def setupAuth(self,app):
# setup session middleware in aiohttp fashion # setup session middleware in aiohttp fashion
@ -65,14 +65,14 @@ class AuthAPI(AppLogger):
def _new_ticket(self, request, user_id): def _new_ticket(self, request, user_id):
client_uuid = request.headers.get('client_uuid') client_uuid = request.headers.get('client_uuid')
ip = self.get_client_ip(request) ip = self._get_ip(request)
if not ip: if not ip:
ip = request.remote ip = request.remote
valid_until = int(time.time()) + self._max_age valid_until = int(time.time()) + self._max_age
print(f'hack: my _new_ticket() called ...remote {ip=}, {client_uuid=}') print(f'hack: my _new_ticket() called ...remote {ip=}, {client_uuid=}')
return self._ticket.new(user_id, valid_until=valid_until, client_ip=ip, user_data=client_uuid) return self._ticket.new(user_id, valid_until=valid_until, client_ip=ip, user_data=client_uuid)
TktAuthentication._get_ip = self.get_client_ip TktAuthentication._get_ip = get_client_ip
TktAuthentication._new_ticket = _new_ticket TktAuthentication._new_ticket = _new_ticket
policy = auth.SessionTktAuthentication(urandom(32), session_max_time, policy = auth.SessionTktAuthentication(urandom(32), session_max_time,
reissue_time=session_reissue_time, reissue_time=session_reissue_time,
@ -92,7 +92,7 @@ class AuthAPI(AppLogger):
user = await auth.get_auth(request) user = await auth.get_auth(request)
is_ok = await self.checkUserPermission(user, path) is_ok = await self.checkUserPermission(user, path)
t2 = time.time() t2 = time.time()
ip = self.get_client_ip(request) ip = get_client_ip(None, request)
if is_ok: if is_ok:
try: try:
ret = await handler(request) ret = await handler(request)