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

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

文章目录

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

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

全屋智能家居的最强大脑!极空间部署全屋AI自动化方案『Miloco』

全屋智能家居的最强大脑!极空间部署全屋AI自动化方案『Miloco』

全屋智能家居的最强大脑!极空间部署全屋AI自动化方案『Miloco』 哈喽小伙伴们好,我是Stark-C~ 说到智能化家居大家都不陌生,毕竟大家或多或少都使用过,或者正在使用。 不知道大家发现没有,目前的智能家居基本都很“被动”,比如说智能灯要么靠“喊”,要么靠“感应”,空调的提前预热或制冷需要我们远程开启,家里的摄像头只是能看画面,但“看不懂”发生了什么。。。 总的来说,现在很多的智能家居广义上说其实只是在“执行命令”,而不是“理解场景”。它们更像是听话的小助手,却没有一个能主动思考、能理解你生活习惯的“大脑”。 如是,小米科技带来的『Miloco』来了! 关于Miloco 🔺Miloco(Xiaomi Local Copilot)是小米在去年十一月份(2025年11月)发布的,据说是一款“智能家居未来探索方案”,该方案以米家摄像机为视觉信息来源,打通全屋IoT设备,实现简单、便捷的全屋智能生态。该项目目前Github上开源,并且正在快速的发展壮大中。 Github主页地址:

【旋转框】基于YOLO26深度学习的无人机视角车辆检测系统【python源码+Pyqt5界面+数据集+训练代码】

【旋转框】基于YOLO26深度学习的无人机视角车辆检测系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【YOLOv8多目标识别与自动标注软件开发】8.【基于YOLOv8深度学习的行人跌倒检测系统】9.【基于YOLOv8深度学习的PCB板缺陷检测系统】10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】11.【基于YOLOv8深度学习的安全帽目标检测系统】12.【基于YOLOv8深度学习的120种犬类检测与识别系统】13.【基于YOLOv8深度学习的路面坑洞检测系统】14.【基于YOLOv8深度学习的火焰烟雾检测系统】15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】16.【基于YOLOv8深度学习的舰船目标分类检测系统】17.【基于YOLOv8深度学习的西红柿成熟度检测系统】18.【基于YOLOv8深度学习的血细胞检测与计数系统】19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】

低代码AI化:是否正在重构开发行业格局?

低代码AI化:是否正在重构开发行业格局?

当低代码遇上AI,不再是简单的“拖拽+模板”拼凑,而是技术逻辑与业务场景的深度重构。JNPF依托AI能力,将表单、字段、咨询、流程四大核心环节智能化升级,让“不懂代码也能做开发”从噱头落地为现实。这是否意味着,低代码AI化正悄然颠覆整个开发行业的底层逻辑? 一、技术底层重构:从“工具拼接”到“原生智能”         传统低代码的核心局限,在于架构层面的“伪智能”。多数平台仅将AI作为附加插件,通过API调用实现表单生成、字段推荐等基础功能,本质上仍是“模板填充+关键词匹配”的逻辑,既无法深度适配个性化业务场景,也难以突破数据孤岛与功能壁垒。         而JNPF实现的是AI与低代码底层架构的深度耦合,以“原生智能”重构开发链路: * AI表单:摒弃传统模板套取模式,基于NLP语义解析技术,直接将自然语言描述转化为标准化表单。例如输入“客户售后工单系统:包含工单编号、客户信息、问题类型、处理进度、回访记录,支持状态流转与权限管控”

FPGA Debug:PCIE XDMA没有Link up(驱动检测不到xilinx PCIE设备)使用LTSSM定位问题

FPGA Debug:PCIE XDMA没有Link up(驱动检测不到xilinx PCIE设备)使用LTSSM定位问题

问题现象: 与驱动联调:驱动无法扫描到Xilinx的PCIE设备 通过ila抓取pcie_link_up信号:发现link up一直为低 问题分析:         出现这种情况,在FPGA中搭建测试环境,使用XDMA+BRAM的形式,减少其它模块的影响,框架如下: 1 检查PCIE的时钟 时钟,必须使用原理图上的GT Ref 差分时钟,通过IBUFDSGTE转为单端时钟 2 检查PCIE 复位 复位:PCIE复位信号有要求--上电后,PCIE_RESTN信号需在电源稳定后延迟一段时间再释放,通常是100ms以上 而这100ms的时间,系统主要做以下的事情: * 电源稳定时间 * 参考时钟稳定时间 * PCIe IP核的复位和初始化时间 * 链路训练时间 // 典型的100ms时间分配: 0-10ms   : 电源稳定 (Power Stable) 10-20ms  : 参考时钟稳定 (Refclk Stable)   20-30ms  : 复位释放和PLL锁定 (Reset Release