前端实现记住密码功能的完整步骤

 更新时间:2026年02月26日 09:20:13   作者:新节  
记住密码功能是Web前端开发中一个经典且高频的用户交互需求,下面这篇文章主要介绍了前端实现记住密码功能的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

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

如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:这是提示浏览器自动填充的关键属性usernamecurrent-password 是标准值。
  • type=”password”:浏览器通过此类型识别密码字段。
  • 规范的 name 属性:如 usernamepassword 等,能帮助浏览器更准确地识别。

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

到此这篇关于前端实现记住密码功能的文章就介绍到这了,更多相关前端记住密码功能内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript页面模板库handlebars的简单用法

    JavaScript页面模板库handlebars的简单用法

    本文主要是给大家分享的一个javascript页面模板库Handlebars的简单用法,可以帮助大家轻松的构建语义化模板,非常的实用,推荐给大家。
    2015-03-03
  • 分析JS中this引发的bug

    分析JS中this引发的bug

    这篇文章主要介绍了分析JavaScript中this引发的bug以及相关的处理方法分析,一起学习下吧。
    2017-12-12
  • js实现按Ctrl+Enter发送效果

    js实现按Ctrl+Enter发送效果

    按Ctrl+Enter发送,思路是监听textarea的onkeydown事件,当ctrl键被按下,并且,keycode为13(回车),时,调用发送表单的函数
    2014-09-09
  • 利用jsonp跨域调用百度js实现搜索框智能提示

    利用jsonp跨域调用百度js实现搜索框智能提示

    这篇文章主要为大家详细介绍了使用jsonp跨域调用百度js实现搜索框智能提示,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • JavaScript中Array实例方法filter的实现原理

    JavaScript中Array实例方法filter的实现原理

    filter() 方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素,本文将给大家介绍JavaScript中Array实例方法filter的实现原理,文中通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-03-03
  • javascript框架设计之类工厂

    javascript框架设计之类工厂

    这篇文章主要介绍了javascript框架设计之类工厂的相关资料,非常浅显易懂,有需要的小伙伴可以查看下。
    2015-06-06
  • JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js

    JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js

    人脸识别的JavaScript程序包是Face Detection,它是由Jay Salvat和Liu Liu开发的。它是一个标准的jQuery插件,通过对提供的图片进行分析,返回所有找到的脸部图像的坐标,感兴趣的朋友跟着小编一起学习js人脸识别技术及脸部识别JavaScript类库Tracking.js吧
    2015-09-09
  • JavaScript实现密码框验证信息

    JavaScript实现密码框验证信息

    这篇文章主要为大家详细介绍了JavaScript实现密码框验证信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 一文详解JavaScript普通函数与箭头函数的本质区别与使用场景

    一文详解JavaScript普通函数与箭头函数的本质区别与使用场景

    作为前端开发者,我们每天都在和各种函数打交道,ES6引入的箭头函数让JavaScript的函数世界更加丰富多彩,但你真的了解它们之间的区别吗?今天,我就来为大家详细剖析普通函数与箭头函数的那些事儿,感兴趣的朋友跟着小编一起来看看吧
    2025-05-05
  • ES6扩展运算符和rest运算符用法实例分析

    ES6扩展运算符和rest运算符用法实例分析

    这篇文章主要介绍了ES6扩展运算符和rest运算符用法,结合实例形式分析了ES6扩展运算符和rest运算符基本功能、用法及操作注意事项,需要的朋友可以参考下
    2020-05-05

最新评论