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

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

“记住密码”功能在现代 Web 应用中仍然非常常见,但由于浏览器安全策略和用户隐私意识的提升,实现方式已经从早期的“明文存 Cookie”演变为更安全、更符合规范的方案。

下面是目前主流的几种实现方式,从简单到推荐的完整说明:

1. 最常见但已不推荐的方式(仅作了解)

方式:用户名 + 密码同时存入 Cookie 或 localStorage

// 登录成功后 localStorage.setItem('username', username); localStorage.setItem('password', password);// 明文!极度危险// 下次打开页面自动填充 document.getElementById('username').value = localStorage.getItem('username')||''; document.getElementById('password').value = localStorage.getItem('password')||'';

问题

  • 密码明文存储在客户端,极易被窃取(XSS、物理访问、开发者工具等)
  • localStorage 没有过期时间,永久保留
  • 几乎所有安全扫描工具都会标记为高危漏洞

结论2025 年已完全不建议使用这种方式


2. 当前最推荐的合规方案(浏览器原生 + 记住我)

现代浏览器(Chrome、Safari、Edge、Firefox)都提供了密码管理器自动填充功能,前端只需要配合好即可实现“记住密码”。

核心思路

不自己存密码,而是让浏览器记住密码。

前端要做的事:

  1. 使用正确的表单结构,让浏览器识别这是登录表单
  2. 添加 autocomplete="on" 或更具体的属性
  3. 提供“记住我”复选框(但实际不存密码)
  4. 登录成功后,浏览器会弹出“是否保存密码”的提示
推荐的 HTML 结构
<formid="loginForm"method="post"autocomplete="on"><div><labelfor="username">用户名 / 邮箱</label><inputtype="text"id="username"name="username"autocomplete="username"required></div><div><labelfor="password">密码</label><inputtype="password"id="password"name="password"autocomplete="current-password"required></div><divclass="remember-me"><inputtype="checkbox"id="remember"name="remember"checked><labelfor="remember">记住我(下次自动登录)</label></div><buttontype="submit">登录</button></form>
关键属性说明
属性作用推荐值
autocomplete="username"告诉浏览器这是用户名/邮箱字段username / email
autocomplete="current-password"告诉浏览器这是当前登录密码current-password
autocomplete="on"表单整体允许自动填充on
name="password"必须有 name,浏览器才会识别为密码字段password
浏览器行为
  • 用户第一次登录成功后,浏览器通常会弹出“保存密码?”的提示
  • 用户选择“保存”后,下次访问相同域名时:
    • 用户名/邮箱会自动填充
    • 密码字段会显示“使用保存的密码”或直接填充(取决于浏览器设置)
“记住我”复选框的作用

现在“记住我”更多是心理安慰 + 业务逻辑

  • 勾选了 → 后端返回更长的 session/token 有效期(比如 30 天)
  • 没勾选 → session 短(比如 2 小时或浏览器关闭即失效)

前端不需要自己存密码,只需把这个状态传给后端。


3. 更现代的方案:使用 Credential Management API(推荐高级场景)

浏览器提供的 Credential Management API 允许网站主动读取/保存用户凭证。

示例代码(保存凭证)
asyncfunctionsaveCredential(username, password){if(!navigator.credentials)return;try{const cred =newPasswordCredential({id: username,password: password,name: username,// 可选,显示在选择器中iconURL:'/logo.png'// 可选});await navigator.credentials.store(cred); console.log('凭证已保存');}catch(err){ console.error('保存凭证失败', err);}}
自动获取保存的凭证
asyncfunctionautoFillLogin(){if(!navigator.credentials)return;try{const cred =await navigator.credentials.get({password:true,mediation:'optional'// 可选:显示选择器});if(cred && cred.type ==='password'){ document.getElementById('username').value = cred.id; document.getElementById('password').value = cred.password;}}catch(err){ console.log('获取凭证失败', err);}}// 页面加载时尝试自动填充 window.addEventListener('load', autoFillLogin);

支持情况(2026 年):

  • Chrome / Edge:完全支持
  • Safari:部分支持(限制较多)
  • Firefox:不支持或支持有限

4. 总结:2025–2026 年推荐做法对比

方案安全性用户体验实现难度推荐指数备注
明文存 localStorage/Cookie★☆☆☆☆★★★☆☆不推荐高危漏洞
浏览器原生自动保存(推荐)★★★★★★★★★★★★★★★首选
Credential Management API★★★★★★★★★☆★★★★☆高级场景
后端返回长效 token + HttpOnly Cookie★★★★★★★★★☆★★★★☆适合 App 端

一句话结论

现代 Web 应用中,“记住密码”功能最好的实现方式是:配合浏览器的密码管理器,使用规范的表单结构 + autocomplete 属性,让浏览器来负责记住和填充密码,前端只负责“记住我”状态的业务逻辑(长 session / token)。

如果你想在项目中同时支持“记住我” + “一键登录”,可以告诉我你的技术栈(React/Vue/纯 JS?),我可以给你更具体的完整代码示例。

Read more

宇树科技机器人核心技术

宇树科技机器人核心技术

前言 宇树科技作为全球足式/人形机器人领域的标杆企业,其技术体系覆盖消费级(Go2)、工业级(B2)、人形(G1/H1)全产品线,以“硬件自研+软件全栈+AI赋能”构建核心壁垒。本文不仅拆解宇树机器人的关键技术(单硬件、单软件、软硬件协同、AI+),还配套就业技能图谱、学习路线与工具推荐,适合机械、电子、计算机、AI领域开发者/求职者参考。 一、宇树科技机器人核心技术全景(附插图建议) 宇树的技术体系可概括为“四层金字塔结构”,从下到上实现“能运动→会运动→智能运动”的进阶: 技术层级核心定位代表技术应用价值底层硬件机器人“躯体骨架”自研伺服电机、分层计算平台、4D激光雷达保障运动性能与环境适配性全栈软件机器人“智慧大脑”MPC/WBC控制算法、SLAM感知融合、ROS2中间件实现精准控制与灵活交互软硬件协同机器人“神经中枢”实时控制闭环、

SpringBoot+Vue 教学辅助平台平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

SpringBoot+Vue 教学辅助平台平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着信息技术的快速发展,教育领域对高效、智能化的教学辅助工具需求日益增长。传统的教学管理模式存在信息传递效率低、资源共享困难、师生互动不足等问题,亟需通过技术手段优化教学流程。教学辅助平台作为数字化教育的重要载体,能够整合教学资源、提升管理效率,并为师生提供便捷的互动渠道。基于此,本研究设计并实现了一款基于SpringBoot和Vue的教学辅助平台,旨在解决传统教学中的痛点问题,推动教育信息化进程。关键词:教学辅助平台、教育信息化、SpringBoot、Vue、资源共享。 本研究采用前后端分离架构,后端基于SpringBoot框架实现业务逻辑和接口开发,前端采用Vue.js框架构建用户界面,结合Element UI组件库提升用户体验。平台主要功能包括用户管理、课程管理、作业提交与批改、在线考试、资源共享及消息通知等模块。数据库采用MySQL存储数据,通过MyBatis-Plus实现高效的数据操作。系统支持多角色权限控制,确保教师、学生和管理员能够安全、高效地使用平台功能。通过接口文档和完整的项目源码,该平台为教学管理提供了可扩展的技术解决方案。关键词:前后端分离、权限控制、M

零基础也能用!HeyGem WebUI版数字人视频快速生成指南

零基础也能用!HeyGem WebUI版数字人视频快速生成指南 你是不是也遇到过这些情况: 想给产品介绍配个数字人讲解视频,却卡在复杂的AI工具上; 看到别人用数字人做知识科普、电商带货、课程讲解,自己却连第一步上传文件都找不到入口; 听说“数字人视频”很火,但一搜全是代码、模型、CUDA版本……根本不知道从哪下手? 别担心——今天这篇指南,就是为你写的。 不讲原理,不碰命令行,不配置环境,打开浏览器就能开始生成。 哪怕你从来没用过AI工具,只要会上传文件、点按钮、看预览,10分钟内就能做出第一个口型同步的数字人视频。 我们用的是 HeyGem数字人视频生成系统批量版WebUI版(二次开发构建by科哥),它把原本需要写脚本、调API、等日志的复杂流程,全部封装进一个清爽直观的网页界面里。没有术语轰炸,没有报错弹窗,只有清晰的区域划分、实时的进度反馈和一键下载的安心感。 下面我们就从零开始,手把手带你走完完整流程。每一步都有截图逻辑说明,关键操作加粗提示,常见卡点提前预警——你只管跟着做,结果自然出来。 1. 启动服务:三步完成,