Skip to content

Commit 9dc84d7

Browse files
committed
feat: 账号密码登录新增IP黑名单校验
1 parent 3ee2cec commit 9dc84d7

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

dash-fastapi-backend/module_admin/service/login_service.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,22 @@ async def logout_services(request: Request, session_id: str):
155155
return True
156156

157157

158+
async def check_login_ip(request: Request, login_user: UserLogin):
159+
"""
160+
校验用户登录ip是否在黑名单内
161+
:param request: Request对象
162+
:param login_user: 登录用户对象
163+
:return: 校验结果
164+
"""
165+
black_ip_value = await request.app.state.redis.get(
166+
f"{RedisInitKeyConfig.SYS_CONFIG.get('key')}:sys.login.blackIPList")
167+
black_ip_list = black_ip_value.split(',') if black_ip_value else []
168+
if login_user.login_info.get('ipaddr') in black_ip_list:
169+
logger.warning("当前IP禁止登录")
170+
raise LoginException(data="", message="当前IP禁止登录")
171+
return True
172+
173+
158174
async def check_login_captcha(request: Request, login_user: UserLogin):
159175
"""
160176
校验用户登录验证码
@@ -180,6 +196,7 @@ async def authenticate_user(request: Request, query_db: Session, login_user: Use
180196
:param login_user: 登录用户对象
181197
:return: 校验结果
182198
"""
199+
await check_login_ip(request, login_user)
183200
account_lock = await request.app.state.redis.get(f"{RedisInitKeyConfig.ACCOUNT_LOCK.get('key')}:{login_user.user_name}")
184201
if login_user.user_name == account_lock:
185202
logger.warning("账号已锁定,请稍后再试")

0 commit comments

Comments
 (0)