Skip to content

Commit 7c746d3

Browse files
committed
feat: magic-dash-pro模板新增可选的用户登录滑块验证功能
1 parent 56d4ff3 commit 7c746d3

3 files changed

Lines changed: 43 additions & 1 deletion

File tree

magic_dash/templates/magic-dash-pro/callbacks/login_c.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,16 @@
3838
State("login-user-name", "value"),
3939
State("login-password-crypto", "data"),
4040
State("login-remember-me", "checked"),
41+
State("login-slider-captcha", "verifyResult", allow_optional=True),
4142
],
4243
running=[
4344
[Output("login-button", "loading"), True, False],
4445
],
4546
prevent_initial_call=True,
4647
)
47-
def handle_login(nClicks, nSubmit, user_name, password_crypto, remember_me):
48+
def handle_login(
49+
nClicks, nSubmit, user_name, password_crypto, remember_me, slider_verify_result
50+
):
4851
"""处理用户登录逻辑"""
4952

5053
time.sleep(0.25)
@@ -88,6 +91,24 @@ def handle_login(nClicks, nSubmit, user_name, password_crypto, remember_me):
8891
"error" if not values.get("login-password") else None,
8992
]
9093

94+
# 处理滑块验证启用场景
95+
if BaseConfig.enable_login_captcha:
96+
# 验证通过
97+
if slider_verify_result and slider_verify_result.get("status") == "success":
98+
pass
99+
else:
100+
set_props(
101+
"global-message",
102+
{
103+
"children": fac.AntdMessage(
104+
type="error",
105+
content="请先完成滑块验证",
106+
)
107+
},
108+
)
109+
110+
return [None] * 4
111+
91112
# 校验用户登录信息
92113

93114
# 根据用户名尝试查询用户

magic_dash/templates/magic-dash-pro/configs/base_config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,6 @@ class BaseConfig:
5656

5757
# 用于登录密码加密传输的RSA私钥文件路径
5858
rsa_private_key_path: str = "magic_dash_pro_private_key.pem"
59+
60+
# 针对用户登录页面,是否添加额外的滑块验证
61+
enable_login_captcha: bool = False

magic_dash/templates/magic-dash-pro/views/login.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,24 @@ def render():
169169
id="login-password-form-item",
170170
label="密码",
171171
),
172+
(
173+
fac.AntdFormItem(
174+
fuc.FefferySliderCaptcha(
175+
id="login-slider-captcha",
176+
block=True,
177+
mode="slider",
178+
tipText={
179+
"default": "请按住滑块,拖动到最右边",
180+
"moving": "请按住滑块,拖动到最右边",
181+
"error": "验证失败,请重新操作",
182+
"success": "验证成功",
183+
},
184+
style=style(width="100%"),
185+
)
186+
)
187+
if BaseConfig.enable_login_captcha
188+
else None
189+
),
172190
fac.AntdCheckbox(
173191
id="login-remember-me", label="记住我"
174192
),

0 commit comments

Comments
 (0)