From 2ec5dba3079b5d39f6d5671a9814b6c74a826d2f Mon Sep 17 00:00:00 2001 From: a981008 <2587450776@qq.com> Date: Fri, 4 Oct 2024 02:29:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20`RNACOS=5FCONSOLE=5FENABLE?= =?UTF-8?q?=5FCAPTCHA=3Dfalse`=20=E6=97=B6=EF=BC=8C=E8=BF=94=E5=9B=9E=20da?= =?UTF-8?q?ta=20=E4=B8=BA=20null=EF=BC=8C=E5=89=8D=E7=AB=AF=E4=BB=A5?= =?UTF-8?q?=E6=AD=A4=E5=B1=8F=E8=94=BD=E6=8E=89=E9=AA=8C=E8=AF=81=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 `RNACOS_CONSOLE_ENABLE_CAPTCHA=false` 时,返回 data 为 null,前端以此屏蔽掉验证码 --- src/console/login_api.rs | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/console/login_api.rs b/src/console/login_api.rs index 4e07835b..f5e92a3f 100644 --- a/src/console/login_api.rs +++ b/src/console/login_api.rs @@ -170,20 +170,32 @@ const WIDTH: u32 = 220; const HEIGHT: u32 = 120; pub async fn gen_captcha(app: Data>) -> actix_web::Result { + let token = uuid::Uuid::new_v4().to_string().replace('-', ""); + let captcha_cookie = Cookie::build("captcha_token", token.as_str()) + .path("/") + .http_only(true) + .finish(); + let captcha_header = ("Captcha-Token", token.as_str()); + + // 如果验证码功能被禁用,data 为 null + if !app.sys_config.console_captcha_enable { + return Ok(HttpResponse::Ok() + .cookie(captcha_cookie) + .insert_header(captcha_header) + .json(ApiResult::::success(None))); + } + //let obj = gen(Difficulty::Easy); let mut obj = Captcha::new(); obj.add_chars(4) .apply_filter(Noise::new(0.1)) .apply_filter(Grid::new(8, 8)) .view(WIDTH, HEIGHT); - let mut code = "".to_owned(); - for c in obj.chars() { - code.push(c); - } - let code = Arc::new(code.to_ascii_uppercase()); + + let code: String = obj.chars().iter().collect::().to_uppercase(); + let code = Arc::new(code); let img = obj.as_base64().unwrap_or_default(); - let token = uuid::Uuid::new_v4().to_string().replace('-', ""); //log::info!("gen_captcha code:{}", &code); let cache_req = CacheManagerReq::Set { key: CacheKey::new(CacheType::String, Arc::new(format!("Captcha_{}", &token))), @@ -192,13 +204,8 @@ pub async fn gen_captcha(app: Data>) -> actix_web::Result