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

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

文章目录

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

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

能明显感受到,前端岗的新风口已经悄悄来了

最近和身边做前端的同行、几家科技公司的前端负责人聊下来,越聊越有感触——我们熟悉的那个前端岗,好像真的在悄悄变样了。以前总有人说前端是“切图仔”,上限低、可替代性强,甚至每年都有“前端已死”的论调,但这段时间明显能感觉到,风向彻底变了。不再是单纯比谁能更快还原设计稿、谁能搞定浏览器兼容性,行业对前端的需求,正在往更深入、更多元的方向走,那些悄悄布局新方向的人,已经开始抓住新机会了。这个新风口没有大张旗鼓的宣传,却在招聘市场、技术落地的细节里,藏满了信号。 🌪️跨端、工程化、可视化…… 企业的数字化转型,把前端推到了 C 位! 如果你还在原地踏步,就真的要被后浪拍在沙滩上了。 想要抓住这波风口,实现薪资翻倍? 这5 大核心能力,是你升咖的入场券:🎫 1️⃣ 跨端开发 📱:Uni-app/Taro/Flutter,一套代码跑遍全端,做真正的 “全栈”。 2️⃣ 工程化搭建 🏗️:Webpack/

WebP革命:从格式之争到WordPress性能优化的实战解析

WebP革命:从格式之争到WordPress性能优化的实战解析 当你在手机上浏览一个图片丰富的网站时,是否经常遇到页面加载缓慢、图片显示卡顿的情况?这背后往往与网站使用的图片格式密切相关。传统JPEG和PNG格式虽然普及,但在现代网页性能优化中已经显得力不从心。Google推出的WebP格式正在悄然改变这一局面——它能在保持同等画质的前提下,将图片体积缩减25%-35%,显著提升页面加载速度。 1. WebP技术解析:为何它能颠覆传统图像格式 WebP并非简单的另一种图片格式,而是Google基于VP8视频编码技术开发的全新一代图像解决方案。它的核心优势在于采用了更先进的预测编码算法,能够更高效地压缩图像数据。 与传统格式相比,WebP具有三大技术突破: * 有损压缩效率:在相同SSIM(结构相似性)指标下,比JPEG小25%-34% * 无损压缩效率:比PNG小26%左右,同时支持透明度通道 * 动画支持:可替代GIF,提供更高画质和更小体积 技术指标对比表: 特性JPEGPNGWebP压缩类型有损无损有损/无损透明度支持不支持支持支持动画支持不支持不支持支

WebGIS + 无人机 + AI:下一代智能巡检系统?

WebGIS + 无人机 + AI:下一代智能巡检系统?

WebGIS 遇上无人机,再叠加 AI 能力,巡检不再只是“看画面”,而是变成“智能决策系统”。 一、为什么 WebGIS + 无人机 + AI 是趋势? 在传统巡检场景中: * 电力巡检 → 人工拍照 * 工地巡查 → 人工记录 * 农业监测 → 靠经验判断 * 安防巡逻 → 事后回放 问题: * 数据无法实时分析 * 缺乏空间关联 * 没有智能预警能力 * 无法形成可视化决策系统 而结合: * WebGIS(三维可视化) * 无人机(数据采集) * AI(智能识别与分析) 我们可以构建: 一个真正的“空天地一体化智能巡检系统” 二、整体技术架构设计 1、系统分层架构 ┌──────────────────────────────┐ │ 前端可视化层 │ │ Cesium + Three.js + WebGL │ └──────────────┬───────────────┘ │ ┌──────────────▼───────────────┐ │ 业务中台层 │ │ AI推理

前端Vue3基础教程超全——下载学习2026.2.5-2.9

一、Vue简介(什么是Vue,为什么选择Vue,开发前的准备) 1.Vue是一款优秀的前端渐进式框架,是目前企业主流的框架技术需求,并且学习难度低。 2.它基于标准的HTML、CSS、JS构建,并提供一套声明式、组件化的编程模型。 3.渐进式框架:是一个框架,也是一个生态。可以某个功能单个、模块中使用,甚至在完整的项目中使用。 4.Vue官方文档: 简介 | Vue.jshttps://cn.vuejs.org/guide/introduction5.Vue API风格:选项式API和组合式API(两种风格不一样但是实现的效果是一致的) 选项式API(Vue2): <script> export default { data() { return { count: 0 } }, methods: { increment() { this.