@@ -56,6 +56,7 @@ async def authenticate_user(cls, request: Request, query_db: Session, login_user
5656 :param login_user: 登录用户对象
5757 :return: 校验结果
5858 """
59+ await cls .__check_login_ip (request )
5960 account_lock = await request .app .state .redis .get (
6061 f"{ RedisInitKeyConfig .ACCOUNT_LOCK .get ('key' )} :{ login_user .user_name } " )
6162 if login_user .user_name == account_lock :
@@ -100,6 +101,21 @@ async def authenticate_user(cls, request: Request, query_db: Session, login_user
100101 f"{ RedisInitKeyConfig .PASSWORD_ERROR_COUNT .get ('key' )} :{ login_user .user_name } " )
101102 return user
102103
104+ @classmethod
105+ async def __check_login_ip (cls , request : Request ):
106+ """
107+ 校验用户登录ip是否在黑名单内
108+ :param request: Request对象
109+ :return: 校验结果
110+ """
111+ black_ip_value = await request .app .state .redis .get (
112+ f"{ RedisInitKeyConfig .SYS_CONFIG .get ('key' )} :sys.login.blackIPList" )
113+ black_ip_list = black_ip_value .split (',' ) if black_ip_value else []
114+ if request .headers .get ('X-Forwarded-For' ) in black_ip_list :
115+ logger .warning ("当前IP禁止登录" )
116+ raise LoginException (data = "" , message = "当前IP禁止登录" )
117+ return True
118+
103119 @classmethod
104120 async def __check_login_captcha (cls , request : Request , login_user : UserLogin ):
105121 """
@@ -229,14 +245,16 @@ def __generate_user_router_menu(cls, pid: int, permission_list):
229245 if permission .menu_type == 'M' :
230246 router_list_data ['name' ] = permission .path .capitalize ()
231247 router_list_data ['hidden' ] = False if permission .visible == '0' else True
232- if permission .is_frame == 1 :
233- router_list_data ['redirect' ] = 'noRedirect'
234248 if permission .parent_id == 0 :
235249 router_list_data ['component' ] = 'Layout'
236250 router_list_data ['path' ] = f'/{ permission .path } '
237251 else :
238252 router_list_data ['component' ] = 'ParentView'
239253 router_list_data ['path' ] = permission .path
254+ if permission .is_frame == 1 :
255+ router_list_data ['redirect' ] = 'noRedirect'
256+ else :
257+ router_list_data ['path' ] = permission .path
240258 if children :
241259 router_list_data ['alwaysShow' ] = True
242260 router_list_data ['children' ] = children
0 commit comments