跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
HTML / CSS大前端

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

我们在访问网站的时候,发现很多的登录页面都是有记住密码的功能的。 如 gitee 码云 的登录页面: ![前端实现 [记住密码] 功能](https://qiniu.meowparty.cn/coder.2023/2026-04-06/f92810a0891242169364d1be2408ebff.png) 一、核心实现原理:不是记住,而是'提示填充' 首先要澄清一个常见的误解:**前端的'记住…

GopherDev发布于 2026/4/6更新于 2026/7/2276K 浏览
前端如何实现记住密码功能

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

如 gitee 码云 的登录页面:

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

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

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

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

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

二、技术实现方案详解

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

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

1. 基础表单要求

<form id="login-form" method="post">
  <!-- 关键:input 的 type 和 name 需规范 -->
  <input type="text" name="username" id="username" autocomplete="username">
  <input type="password" name="password" id="password" autocomplete="current-password">
  <!-- '记住我'复选框 -->
  <label>
    < = = => 记住密码
  
  登录

input
type
"checkbox"
name
"remember-me"
id
"remember-me"
</label>
<button type="submit">
</button>
</form>

关键属性说明:

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

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

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

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

1. 实现示例:使用 Cookie

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

目录

  1. 一、核心实现原理:不是记住,而是“提示填充”
  2. 二、技术实现方案详解
  3. 方案一:依赖浏览器原生行为(最常用)
  4. 方案二:前端持久化存储(需谨慎考虑)
  5. 三、安全考量与实践准则
  6. 四、最佳实践总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 基于 Isaac Lab 训练机器人行走入门教程
  • OpenAI o1 模型解析:推理能力突破与人类水平对比
  • GitHub 自定义 SSH Key 配置与验证指南
  • 后端转 AI 创作?脉脉 AMA 活动体验与职场生态分析
  • llama.cpp 量化大模型部署与运行指南
  • WhisperLiveKit 会议纪要模板定制:适配不同场景样式
  • Linux 环境下 libwebkit2gtk-4.1-0 库安装与原理详解
  • OpenClaw 进阶教程:记忆系统、定时任务、多模型切换与子代理解析
  • 前端拖拽交互实战:告别原生 API 的卡顿体验
  • OpenClaw 对接飞书机器人配置与 Gateway 断开问题排查
  • 医疗连续体机器人模块化控制界面设计与 Python 库应用(下)
  • GitHub Copilot 核心特性与高级配置指南
  • Python 办公自动化实战:批量处理 Excel、Word 和 PPT
  • 基于 DeepSeek API 实现贪吃蛇游戏开发实战
  • AI 体操视频暴露物理缺陷,LeCun:视频生成模型并不懂物理
  • 基于 DeepSeek-OCR-WEBUI 镜像的本地 OCR 部署实战
  • 十五五规划下 Java 程序员的职业机遇与行业新赛道
  • 蓝耘 × 通义万相 2.1,AIGC 双雄合璧,点燃数字艺术新引擎
  • Stable Yogi 皮衣生成工具在动漫展会 VR 展厅的应用
  • 用飞书文档和 feishu-docx 打造 AI Agent 动态知识库

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online