在 OpenHarmony(HarmonyOS NEXT / 标准 OpenHarmony)中,“验证码”设计通常分为界面设计、交互逻辑、安全策略、技术实现四个层面。下面从常见场景出发,给你一套可落地的设计方案。
在 OpenHarmony 中常用验证码类型:
前端(OpenHarmony) + 后端服务
OpenHarmony App
↓ 请求验证码
Backend Service
↓
短信网关 / 邮件服务
原则:验证码永远不能在前端生成或校验核心逻辑
示例:短信验证码登录
// LoginPage.ets
@Entry
@Component
struct LoginPage {
@State phone: string = ''
@State code: string = ''
@State countdown: number = 0
build() {
Column() {
TextInput({ placeholder: '手机号' })
.onChange(v => this.phone = v)
Row() {
TextInput({ placeholder: '验证码' })
.onChange(v => this.code = v)
Button(this.countdown > 0 ? `${this.countdown}s` : '获取验证码')
.enabled(this.countdown === 0)
.onClick(() => this.sendCode())
}
Button('登录')
.onClick(() => this.login())
}
}
sendCode() {
// 调用后端接口
}
login() {
// 校验验证码
}
}
startCountdown() {
this.countdown = 60
let timer = setInterval(() => {
this.countdown--
if (this.countdown <= 0) clearInterval(timer)
}, 1000)
}
// 示例(伪代码)
String code = RandomUtil.randomNumbers(6);
redis.set("code:" + phone, code, 300);
获取验证码
POST /api/sms/code
{
"phone": "13800000000"
}
登录校验
POST /api/login
{
"phone": "13800000000",
"code": "123456"
}
✅ 必须做:
❌ 禁止:
Image 组件加载Image('https://api.xxx.com/captcha?t=' + Date.now())
我可以帮你:
你现在是做 登录 / 注册 / 支付 / 防刷 哪种场景?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。