讲师中心 微信公众号
AI工具推荐 视频效率加速

网页应用怎么通过 localStorage 存储用户登录状态与偏好设置

大婷大大_3985

大婷大大_3985

发布时间:2026-11-02 08:37:48

|

978人浏览过

|

来源于php中文网

原创

localStorage适合存登录标识和偏好设置,但不可存token或密码;需用JSON序列化、容错读取、早期应用、跨页同步及隐私模式降级。

网页应用怎么通过 localstorage 存储用户登录状态与偏好设置

网页应用可以用 localStorage 记住用户是否登录、用什么主题、字体多大、语言选了哪个——但不能直接存 token 或密码,也不能指望它在所有隐私模式下都可用。关键不是“能不能存”,而是“怎么存得稳、读得准、用得顺”。

存登录状态:只记“已登录”,不存敏感凭证

localStorage 适合保存一个轻量的登录标识,比如 是否已认证 和 基础用户信息(如昵称、头像 URL),但绝不直接存 access_token、refresh_token 或密码明文。

  • 登录成功后,写入:
    localStorage.setItem('auth', JSON.stringify({ isLoggedIn: true, nickname: 'Alex', avatar: '/img/alex.jpg' }))
  • 每次页面加载时读取并校验:
    先 try-catch 解析,再检查 isLoggedIn === true;若解析失败或为 false,则视为未登录,清空缓存并跳转登录页
  • 退出登录时,统一调用:
    localStorage.removeItem('auth'),避免残留无效状态

存偏好设置:打包对象 + 统一 key + 早期应用

把所有用户界面偏好(主题、字体、语言、侧边栏开关等)合并成一个对象,用固定 key 存储,比零散设十几个 key 更易维护、升级和降级。

财经HTML高端海报生成
财经HTML高端海报生成

复杂得财经如何变成清晰,适合手机看的海报?如何加上你的IP

下载
  • 推荐写法:
    localStorage.setItem('userPrefs', JSON.stringify({ theme: 'dark', fontSize: 16, lang: 'zh-CN', sidebarCollapsed: false }))
  • 读取必须加容错:
    const prefs = JSON.parse(localStorage.getItem('userPrefs') || '{}');
    没数据就用默认值,不强行写入空对象
  • 应用时机要早:在 内或 DOMContentLoaded 阶段执行,给 document.documentElement 设 CSS 变量或 class,防止 FOUC(闪白屏)

跨标签页同步:靠 storage 事件,但当前页要手动更新

storage 事件只在其他同源页面修改 localStorage 后触发,不会通知自己。所以用户在一个标签页切了深色模式,另一个标签页能自动响应,但当前页必须自己改 UI。

  • 每次 setItem 后,立刻调用 UI 更新函数(例如切换 body class、重设 font-size)
  • 监听跨页变更:
    window.addEventListener('storage', e => { if (e.key === 'userPrefs') applyPrefs(JSON.parse(e.newValue || '{}')); });
  • 注意:Safari 无痕模式、部分国产浏览器可能禁用 localStorage,需包裹 try-catch,降级为内存变量暂存

安全与健壮性:避开常见雷区

看似简单的 API,几个细节没处理好就会导致白屏、报错或数据丢失。

  • 不存敏感数据:token、银行卡号、身份证号等一律走 httpOnly Cookie 或后端 session
  • 不依赖强一致性:库存、订单状态这类实时性要求高的数据,必须以服务端为准,localStorage 只作临时缓存或草稿
  • 防范容量超限:单个 key 不宜超过 1MB;定期清理过期项(如加时间戳字段),或用 LRU 策略管理 key 列表
  • 注意隐私模式限制:首次进入前可快速探测:
    try { localStorage.setItem('test', 'x'); localStorage.removeItem('test'); } catch { /* 启用内存 fallback */ }

热门AI工具

更多
音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2783

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

6063

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

6990

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

6778

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

963

2024.05.22

js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

5466

2023.06.20

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

1329

2023.07.04

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

5404

2023.07.04

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

0

2026.11.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 231人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn