在 OpenHarmony(HarmonyOS NEXT / 标准系统)里,“验证码”通常分两类:
下面分别说明前端(ArkTS)怎么开发,以及常见实现思路。
// 发送验证码
Button('获取验证码')
.onClick(() => {
sendCode('13800000000')
})
// 输入框
TextInput({ placeholder: '请输入验证码' })
.onChange((val) => {
code = val
})
// 登录
Button('登录')
.onClick(() => {
verifyCode('13800000000', code)
})
import http from '@ohos.net.http'
async function sendCode(phone: string) {
const req = http.createHttp()
await req.request(
'https://your-api.com/sendCode',
{
method: http.RequestMethod.POST,
extraData: { phone }
}
)
}
⚠️ 验证码逻辑 必须在后端实现
前端不能生成或校验验证码
// 生成 4 位随机字符
function genCode(): string {
const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'
let code = ''
for (let i = 0; i < 4; i++) {
code += chars[Math.floor(Math.random() * chars.length)]
}
return code
}
在 Canvas 上绘制:
Canvas(this.context)
.onReady(() => {
this.context.fillText(code, 20, 40)
})
Image('https://your-api.com/captcha')
点击刷新:
Image(this.captchaUrl)
.onClick(() => {
this.captchaUrl = 'https://your-api.com/captcha?t=' + Date.now()
})
@State count: number = 60
startCountdown() {
const timer = setInterval(() => {
this.count--
if (this.count === 0) clearInterval(timer)
}, 1000)
}
Button(this.count > 0 ? `${this.count}s` : '获取验证码')
.enabled(this.count === 0)
✅ 验证码必须 后端校验
✅ 短信验证码要 限流(60s 一次)
✅ 图形验证码要 带 session / token
✅ 不要在前端写死正确验证码
为了给你更精准的代码,我需要知道:
我可以直接给你 完整 Demo 代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。