HarmonyOS鸿蒙Next中ArkWeb怎么关闭密码保险箱

HarmonyOS鸿蒙Next中ArkWeb怎么关闭密码保险箱 登录页跳转到另外一个页面,第二个页面中的ArkWeb打开某些网页时会触发密码保险箱的账号密码更新功能,登录页的TextInput未设置contentType,怎么关闭密码保险箱?

HarmonyOS:5.1.0 DevEco Studio:6.0.0.878 API:12+

6 回复

网页密码保存规格

1、ArkWeb依赖密码表单提交成功后,触发页面跳转到其他页面,才能触发密码保存。

2、Native应用通过ArkWeb实现H5登入,登录成功后请勿立即销毁ArkWeb实例,否则将无法提示密码保存。

网页密码表单规格

ArkWeb使用Chromium智能算法,自动识别网页中的用户名、密码元素。算法对用户名、密码表单的设计,有一定的约束。

不支持自动填充的密码登录表单类型

  1. 初始页面内无用户名密码表单元素,点击登录跳转页面后,新增非<form>类型的用户名密码表单。
  2. 密码输入框携带了autocomplete=“new-password”属性。
  3. 用户名输入框type=“number”,验证码输入框type=“number”,无密码输入框。
  4. 用户名和密码元素中间存在其他<input>元素,算法推断出的用户名元素,不符合用户预期。
  5. 网页通过javascript脚本,变更了<input>元素的焦点或者修改<input>元素的value。
  6. 页面加载完成,<input>的type属性不是"password",点击登录才变成"password"类型。
  7. 用户名<input>元素的autocomplete=“one-time-code"或者"cc-*”,或者id、name属性上能正则匹配到如下one-time-code或者信用卡标识:
    inline constexpr char16_t kOneTimePwdRe[] =
        u"one.?time|sms.?(code|token|password|pwd|pass)";
    inline constexpr char16_t kCardCvcRe[] =
        u"verification|card.?identification|security.?code|card.?code"
        u"|security.?value"
        u"|security.?number|card.?pin|c-v-v"
        u"|código de segurança"  // pt-BR
        u"|código de seguridad"  // es-MX
        u"|karten.?prüfn"        // de-DE
        u"|(?:cvn|cvv|cvc|csc|cvd|ccv)"
        // We used to match "cid", but it is a substring of "cidade" (Portuguese for
        // "city") and needs to be handled carefully.
        u"|\\bcid\\b|cccid";
    
  8. 用户名<input>元素上id、name、label内容中匹配到如下密码类型标识:
    const char* const kNegativeLatin[] = {
        "pin",    "parola",   "wagwoord",   "wachtwoord",
        "fake",   "parole",   "givenname",  "achinsinsi",
        "token",  "parool",   "firstname",  "facalfaire",
        "fname",  "lozinka",  "pasahitza",  "focalfaire",
        "lname",  "passord",  "pasiwedhi",  "iphasiwedi",
        "geslo",  "huahuna",  "passwuert",  "katalaluan",
        "heslo",  "fullname", "phasewete",  "adgangskode",
        "parol",  "optional", "wachtwurd",  "contrasenya",
        "sandi",  "lastname", "cyfrinair",  "contrasinal",
        "senha",  "kupuhipa", "katasandi",  "kalmarsirri",
        "password", "loluszais",  "tenimiafina",
        "second", "passwort", "middlename", "paroladordine",
        "codice", "pasvorto", "familyname", "inomboloyokuvula",
        "modpas", "salasana", "motdepasse", "numeraeleiloaesesi",
        "captcha"};
    const char* const kNegativeNonLatin[] = {
        "fjalëkalim", "የይለፍቃል", "كلمهالسر", "գաղտնաբառ",
        "пароль", "পাসওয়ার্ড", "парола", "密码", "密碼",
        "დაგავიწყდათ", "κωδικόςπρόσβασης", "પાસવર્ડ", "סיסמה",
        "पासवर्ड", "jelszó", "lykilorð", "paswọọdụ",
        "パスワード", "ಪಾಸ್ವರ್ಡ್", "пароль", "ការពាក្យសម្ងាត់",
        "암호", "şîfre", "купуясөз", "ລະຫັດຜ່ານ",
        "slaptažodis", "лозинка", "पासवर्ड", "нууцүг",
        "စကားဝှက်ကို", "पासवर्ड", "رمز", "کلمهعبور",
        "hasło", "пароль", "лозинка", "پاسورڊ",
        "මුරපදය", "contraseña", "lösenord", "гузарвожа",
        "கடவுச்சொல்", "పాస్వర్డ్", "รหัสผ่าน", "пароль",
        "پاسورڈ", "mậtkhẩu", "פּאַראָל", "ọrọigbaniwọle"};
    

更多关于HarmonyOS鸿蒙Next中ArkWeb怎么关闭密码保险箱的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


包含username或password会触发保险箱。

使用Docker部署Spring Boot项目

1. 创建Spring Boot项目

使用Spring Initializr创建一个简单的Spring Boot项目。

2. 编写一个简单的接口

在项目中创建一个简单的REST接口。

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Docker!";
    }
}

3. 添加Docker支持

在项目根目录下创建Dockerfile文件。

# 使用官方的OpenJDK 11作为基础镜像
FROM openjdk:11-jre-slim

# 设置工作目录
WORKDIR /app

# 将构建好的jar包复制到容器中
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar

# 暴露端口
EXPOSE 8080

# 启动应用
ENTRYPOINT ["java", "-jar", "app.jar"]

4. 构建和运行Docker容器

4.1 构建Docker镜像

在项目根目录下执行以下命令构建Docker镜像。

docker build -t spring-boot-docker-demo .

4.2 运行Docker容器

使用以下命令运行Docker容器。

docker run -p 8080:8080 spring-boot-docker-demo

4.3 访问应用

在浏览器中访问http://localhost:8080/hello,应该能看到Hello, Docker!的响应。

5. 使用Docker Compose

为了更方便地管理多个容器,可以使用Docker Compose。

5.1 创建docker-compose.yml文件

在项目根目录下创建docker-compose.yml文件。

version: '3.8'
services:
  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      - SPRING_PROFILES_ACTIVE=docker

5.2 使用Docker Compose启动应用

在项目根目录下执行以下命令启动应用。

docker-compose up

6. 总结

通过以上步骤,我们成功地将一个Spring Boot应用打包成Docker镜像,并使用Docker和Docker Compose运行。这种方式使得应用的部署和扩展变得更加简单和一致。

当网页登录界面包含usename和password会触发保险箱功能

HarmonyOS Next中ArkWeb关闭密码保险箱的方法

在应用代码中调用ArkWeb的setPasswordSave接口,将参数设置为false。具体实现需在Web组件初始化或配置时完成。此操作将禁止网页表单的密码自动保存功能。

在HarmonyOS Next的ArkWeb中,密码保险箱功能默认开启,要关闭它,可以通过配置ArkWeb的WebController来实现。

具体操作如下:

  1. 获取WebController并设置偏好:在第二个页面的ArkWeb组件初始化时,通过其控制器禁用密码保存功能。

    // 示例代码
    import { webview } from '@kit.ArkWeb';
    
    @Component
    struct SecondPage {
      controller: webview.WebviewController = new webview.WebviewController();
    
      aboutToAppear() {
        // 关键:关闭密码保存功能
        let webSetting: webview.WebSetting = this.controller.getWebSetting();
        webSetting.setSavePasswordEnabled(false); // 禁用密码保险箱
      }
    
      build() {
        Column() {
          // 你的ArkWeb组件
          ArkWeb({
            src: '你的网页地址',
            controller: this.controller
          })
        }
      }
    }
    
  2. 针对登录页的补充说明:虽然你提到第一个登录页的TextInput未设置contentType,但密码保险箱的触发通常与网页表单的type="password"等HTML属性相关。ArkWeb的行为主要受其内部WebView设置控制,因此上述在承载网页的ArkWeb组件中禁用的方法是直接有效的。

总结:核心是调用webSetting.setSavePasswordEnabled(false)来禁止网页密码的自动保存和更新提示。此设置作用于该WebviewController控制的单个ArkWeb实例,不会影响其他ArkWeb组件。

请根据你的页面结构,将禁用代码放置在承载目标网页的ArkWeb组件逻辑中。

回到顶部