前端如何实现 [记住密码] 功能

前端如何实现 [记住密码] 功能

文章目录

我们在访问网站的时候,发现很多的登录页面都是有记住密码的功能的。

gitee码云的登录页面:

前端实现 [记住密码] 功能

一、核心实现原理:不是记住,而是“提示填充”

首先要澄清一个常见的误解:前端的“记住密码”功能通常并不直接存储你的密码明文。它的核心原理是:请求浏览器将账号密码保存到其密码管理器中,并在下次检测到对应登录表单时,自动或提示用户填充。

下图清晰地展示了这一核心流程:

服务器浏览器密码管理器登录表单用户服务器浏览器密码管理器登录表单用户首次登录与保存后续自动填充1. 输入账号密码,勾选“记住我”2. 提交表单,发送登录请求3. 返回登录成功响应4. 触发浏览器提示:“是否保存密码?”5. 用户点击“保存”6. 将账号、密码、站点关联加密存储7. 再次访问登录页8. 自动识别表单并填充已存信息9. 用户点击登录(或直接提交)10. 发送填充后的凭证完成登录

二、技术实现方案详解

方案一:依赖浏览器原生行为(最常用)

这是最标准、最安全的做法。浏览器的密码管理器会自动识别符合规范的登录表单。

1. 基础表单要求

<formid="login-form"method="post"><!-- 关键:input的type和name需规范 --><inputtype="text"name="username"id="username"autocomplete="username"><inputtype="password"name="password"id="password"autocomplete="current-password"><!-- “记住我”复选框 --><label><inputtype="checkbox"name="remember-me"id="remember-me"> 记住密码 </label><buttontype="submit">登录</button></form>

关键属性说明:

  • autocomplete:这是提示浏览器自动填充的关键属性usernamecurrent-password 是标准值。
  • type=”password”:浏览器通过此类型识别密码字段。
  • 规范的 name 属性:如 usernamepassword 等,能帮助浏览器更准确地识别。

2. 登录成功后的处理
当表单提交且服务器验证成功后,如果用户勾选了“记住我”,浏览器会自动弹出对话框,询问用户是否保存密码。这个提示是由浏览器控制的,网站无法强制触发。

方案二:前端持久化存储(需谨慎考虑)

有时需要实现“记住登录状态”而非让浏览器管理密码本身(例如保持用户一周内免登录)。这时会使用前端存储。

1. 实现示例:使用Cookie

functionhandleLogin(username, password, rememberMe){// 向服务器发送登录请求...if(loginSuccess && rememberMe){// 服务器在响应中设置一个长期的、HttpOnly的认证Token Cookie// 示例:Set-Cookie: session_token=abc123; Max-Age=604800; HttpOnly; Secure// 前端仅通过是否勾选“记住我”来影响服务器对Cookie有效期的设置}}

2. 实现示例:使用Web Storage(仅存储标识)

// 登录成功后if(rememberMe && loginSuccess){// 存储一个非敏感的、服务器颁发的Token(而非密码!) localStorage.setItem('auth_token', serverResponse.token); localStorage.setItem('username', username);// 仅用于显示,不用于认证}// 下次访问时检查 window.addEventListener('DOMContentLoaded',function(){const token = localStorage.getItem('auth_token');if(token){// 使用Token向服务器请求验证,获取登录态autoLoginWithToken(token);}});

三、安全考量与实践准则

记住密码功能在安全上如履薄冰,以下是必须遵守的准则:

安全风险错误做法正确实践
密码明文存储将密码存到 localStorage、Cookie 或全局变量绝不在前端持久化存储明文密码。让浏览器的密码管理器负责安全存储。
传输安全登录表单通过 HTTP 明文提交始终使用 HTTPS,确保凭证传输过程加密。
Cookie安全使用 Cookie 时未设置安全标志设置 HttpOnly(防XSS窃取)、Secure(仅HTTPS传输)、SameSite(防CSRF)属性。
会话管理过长的会话有效期“记住我”的会话应有过期时间(如7天、30天),并提供便捷的“退出所有设备”功能。

四、最佳实践总结

  1. 优先使用浏览器原生功能:对于“记住密码”,最安全的方式是让浏览器管理。确保你的登录表单语义清晰(规范的 autocompletetype)。
  2. 区分“记住密码”和“保持登录”
    • 记住密码:让浏览器保存凭证,下次自动填充。适用于个人设备。
    • 保持登录:在用户关闭浏览器再打开后,通过安全的Token自动登录。实现时服务器颁发一个有时效性的Token(如7天)。
  3. 给予用户控制权:在“账户设置”中提供“查看已保存设备”和“远程登出”的功能,增加用户安全感。
  4. 清晰的视觉提示:当密码被自动填充或用户处于“记住登录”状态时,应有明确的界面提示。
  5. 关键操作重新验证:即使用户处于“记住登录”状态,在进行支付、修改密码等敏感操作时,仍应要求重新输入密码或进行二次验证。

👉点击进入我的网站

Read more

Qwen3-VL-WEBUI游戏AI:视觉决策系统搭建

Qwen3-VL-WEBUI游戏AI:视觉决策系统搭建 1. 引言:为何需要基于Qwen3-VL的视觉决策系统? 在当前AI驱动的游戏自动化、智能NPC设计与玩家行为分析等场景中,传统的纯文本大模型已难以满足复杂交互需求。游戏界面本质上是高度结构化的多模态环境——包含图像、动态UI元素、空间布局和实时反馈机制。为此,阿里开源的 Qwen3-VL-WEBUI 提供了一个强大的解决方案。 该平台内置了 Qwen3-VL-4B-Instruct 模型,作为Qwen系列迄今最强的视觉-语言模型(VLM),具备深度视觉理解、长上下文推理与GUI操作能力。通过将其部署为Web服务,开发者可快速构建一个能“看懂”游戏画面并做出智能决策的AI代理系统。 本文将围绕如何利用 Qwen3-VL-WEBUI 构建一套完整的游戏AI视觉决策系统,涵盖技术原理、部署实践、核心功能调用及工程优化建议,帮助读者实现从“感知”到“行动”的闭环。 2. 技术架构解析:Qwen3-VL的核心能力拆解 2.1 多模态融合机制:视觉与语言的统一表征 Qwen3-VL采用交错MRoPE(Multiresolu

前端如何实现 [记住密码] 功能

前端如何实现“记住密码”功能 “记住密码”功能在现代 Web 应用中仍然非常常见,但由于浏览器安全策略和用户隐私意识的提升,实现方式已经从早期的“明文存 Cookie”演变为更安全、更符合规范的方案。 下面是目前主流的几种实现方式,从简单到推荐的完整说明: 1. 最常见但已不推荐的方式(仅作了解) 方式:用户名 + 密码同时存入 Cookie 或 localStorage // 登录成功后 localStorage.setItem('username', username); localStorage.setItem('password', password);// 明文!极度危险// 下次打开页面自动填充 document.getElementById('username').value = localStorage.getItem('username&

从零构建:使用aiortc实现WebRTC连接的实战指南

快速体验 在开始今天关于 从零构建:使用aiortc实现WebRTC连接的实战指南 的探讨之前,我想先分享一个最近让我觉得很有意思的全栈技术挑战。 我们常说 AI 是未来,但作为开发者,如何将大模型(LLM)真正落地为一个低延迟、可交互的实时系统,而不仅仅是调个 API? 这里有一个非常硬核的动手实验:基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。 从0到1构建生产级别应用,脱离Demo,点击打开 从0打造个人豆包实时通话AI动手实验 从零构建:使用aiortc实现WebRTC连接的实战指南 背景痛点:为什么选择aiortc? WebRTC技术虽然强大,但原生实现需要处理大量底层细节,这对开发者来说是个不小的挑战: * 协议栈复杂:需要理解STUN/TURN服务器配置、SDP协商、ICE候选交换等概念

从零部署本地大语言模型:Ollama + Open WebUI 完整实战指南(附详细步骤和代码)

前言 在 AI 大模型爆发的今天,你是否也想在自己的电脑上运行一个专属的大语言模型?本指南将手把手教你从零开始部署一套完整的本地 AI 对话系统,让你无需联网、无需付费 API,就能享受 AI 带来的便利。 技术栈:Ollama(模型运行)+ Open WebUI(Web 界面)+ DeepSeek/LLaMA(大模型) 适用场景: * 个人开发者本地调试 AI 应用 * 企业内网私有化部署,数据不出网 * 学习研究大模型原理 * 搭建专属 AI 助手 一、架构介绍 在开始部署之前,我们先了解一下整体架构: 组件作用端口Ollama大模型运行引擎,负责模型加载和推理11434Open WebUI类 ChatGPT 的 Web 界面,提供对话功能8080模型文件DeepSeek、LLaMA 等大语言模型- 二、环境准备