HarmonyOS鸿蒙Next中ArkWeb怎么关闭密码保险箱
HarmonyOS鸿蒙Next中ArkWeb怎么关闭密码保险箱 登录页跳转到另外一个页面,第二个页面中的ArkWeb打开某些网页时会触发密码保险箱的账号密码更新功能,登录页的TextInput未设置contentType,怎么关闭密码保险箱?
HarmonyOS:5.1.0 DevEco Studio:6.0.0.878 API:12+
网页密码保存规格
1、ArkWeb依赖密码表单提交成功后,触发页面跳转到其他页面,才能触发密码保存。
2、Native应用通过ArkWeb实现H5登入,登录成功后请勿立即销毁ArkWeb实例,否则将无法提示密码保存。
网页密码表单规格
ArkWeb使用Chromium智能算法,自动识别网页中的用户名、密码元素。算法对用户名、密码表单的设计,有一定的约束。
不支持自动填充的密码登录表单类型
- 初始页面内无用户名密码表单元素,点击登录跳转页面后,新增非
<form>类型的用户名密码表单。 - 密码输入框携带了autocomplete=“new-password”属性。
- 用户名输入框type=“number”,验证码输入框type=“number”,无密码输入框。
- 用户名和密码元素中间存在其他
<input>元素,算法推断出的用户名元素,不符合用户预期。 - 网页通过javascript脚本,变更了
<input>元素的焦点或者修改<input>元素的value。 - 页面加载完成,
<input>的type属性不是"password",点击登录才变成"password"类型。 - 用户名
<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"; - 用户名
<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来实现。
具体操作如下:
-
获取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 }) } } } -
针对登录页的补充说明:虽然你提到第一个登录页的
TextInput未设置contentType,但密码保险箱的触发通常与网页表单的type="password"等HTML属性相关。ArkWeb的行为主要受其内部WebView设置控制,因此上述在承载网页的ArkWeb组件中禁用的方法是直接有效的。
总结:核心是调用webSetting.setSavePasswordEnabled(false)来禁止网页密码的自动保存和更新提示。此设置作用于该WebviewController控制的单个ArkWeb实例,不会影响其他ArkWeb组件。
请根据你的页面结构,将禁用代码放置在承载目标网页的ArkWeb组件逻辑中。

