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

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

文章目录

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

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

ToDesk重磅更新, 硬核-ToClaw AI 实现科技新闻日报自动化实战

ToDesk重磅更新, 硬核-ToClaw AI 实现科技新闻日报自动化实战

一、前言 最近发现ToDesk悄悄更新,直接内置了 ToClaw 龙虾AI,真的格外惊喜!之前看中轻量化OpenClaw却被繁琐的本地部署、代码搭建劝退,如今不用任何前置准备,打开就能用。刚好我想做一款省心的每日科技新闻自动播报工具,省去手动搜资讯的麻烦,索性直接实测,从功能上手、实操任务到同类对比,全程分享真实体验,不吹不黑,看看这款桌面AI助手到底好不好用。 二、界面与入口 最新版ToDesk的 ToClaw 入口设在首页醒目位置,我下载的是4.8.7.1版本。 不用翻找多级菜单,打开就能快速定位,上手零难度,点开直接进入交互界面,操作极简高效。 启动ToClaw后会自动生成专属悬浮窗,支持全局一键唤醒,不管是办公、整理文件还是使用其他软件,都能随时呼出AI,不用切换界面,日常使用便捷度拉满,实测顺手不耽误手头操作。 三、核心架构 简单说下ToClaw的底层逻辑,OpenClaw并非独立运算模型,而是轻量化交互载体,负责衔接用户与AI核心算力,不占用过多内存,这也是它轻量化的关键,所有智能处理全靠底层内核支撑,

别被“会聊天”的AI骗了!真正的数字助理,应该是ToClaw这样的

别被“会聊天”的AI骗了!真正的数字助理,应该是ToClaw这样的

这段时间 OpenClaw 很火,火到不少人第一次开始认真讨论一件事: AI 到底该只是陪你聊天,还是应该替你把事完成? 从官方说明看,OpenClaw 更偏向个人开源 AI 助手路线,推荐通过终端里的 onboarding wizard 完成配置,Windows 侧也建议走 WSL2。这种路线很酷,但对大多数普通办公用户来说,还是意味着一定的学习和折腾成本。 也正因为这样,我反而更能理解 ToDesk 推出 ToClaw 的价值:它不是想让每个人都去研究怎么“部署一个龙虾”,而是想把 AI 直接变成一个你登录 ToDesk 后就能随时使唤的数字助理。 真正的差别,不是会不会聊天,而是会不会接任务 现在很多 AI 工具都已经“很会说”了。写总结、写标题、润色文案、翻译内容,基本都不难。但问题在于,真实工作并不是一个纯聊天场景。

什么是人工智能?AI、机器学习、深度学习的关系

什么是人工智能?AI、机器学习、深度学习的关系

文章目录 * 什么是人工智能 * 人工智能的定义 * 人工智能的分类 * 什么是机器学习 * 机器学习的基本概念 * 机器学习的工作流程 * 机器学习的主要类型 * 什么是深度学习 * 深度学习的基本概念 * 深度学习的优势 * 深度学习的应用领域 * AI、机器学习、深度学习的关系 * 三者的层次关系 * 三者的发展历程 * 如何选择合适的方法 * 实际应用案例分析 * 案例一:垃圾邮件过滤 * 案例二:图像识别 * 案例三:推荐系统 * 学习路径建议 * 第一阶段:打好基础 * 第二阶段:深入学习 * 第三阶段:实战提升 * 总结 本篇文章将带你深入理解人工智能的核心概念,厘清AI、机器学习、深度学习之间的关系,为后续的学习打下坚实的基础。 什么是人工智能 人工智能的定义 人工智能,英文名称为Artificial Intelligence,简称AI,这个概念最早由约翰·麦卡锡在1956年的达特茅斯会议上提出。那么什么是人工智能呢?简单来说,人工智能就

AI时代人人都是产品经理:能力边界:AI 能做什么、不能做什么?产品经理必须摸清的技术边界

AI时代人人都是产品经理:能力边界:AI 能做什么、不能做什么?产品经理必须摸清的技术边界

为什么要先搞懂AI的能力边界? 在AI工具遍地开花的今天,很多产品经理陷入了两个极端:要么过度迷信AI,认为它能解决所有问题;要么对AI充满恐惧,担心自己的岗位被替代。但现实是:AI不是产品经理的竞争对手,而是需要你掌握的核心工具。 搞懂AI的能力边界,本质是帮你: 1. 避免在需求评审会上提出技术上不可能实现的需求 2. 精准判断哪些工作可以交给AI提效,哪些必须自己亲力亲为 3. 利用AI的能力边界,设计出更有竞争力的产品方案 4. 建立和技术团队平等对话的技术认知基础 AI能做什么?6类产品经理必用的AI能力 1. 结构化信息处理:批量处理重复工作 AI最擅长处理有明确规则、结构化、重复性的任务,这些工作往往占据了产品经理30%以上的时间: * 自动整理用户调研数据,提炼高频需求关键词 * 批量生成产品文档的初始版本,如需求说明、接口文档 * 分析用户行为日志,输出标准化的行为路径报告 实战示例:用AI批量生成PRD需求条目 from openai import OpenAI client = OpenAI(api_key="