localStorage浏览器缓存前端更改的信息,即使浏览器刷新依然保存更改内容

localStorage浏览器缓存

一、首先判断浏览器是否支持localStorage(一般来说都会支持)

		//* 1.判断浏览器是否支持localStorage这个属性
		if(!window.localStorage) {
			alert("当前浏览器不支持localStorage,请升级您的浏览器,以支持localStorage!");
		} else {
			console.log("您的浏览器支持localStorage!");
		}

二、存储值

以下是实际运用的示例代码
const showAction = ref()
showAction .value = false
const loadAtion = () => {
  const savedState = localStorage.getItem('showAction ') #主要是这一行代码获取值
  if (savedState !== null) {
    showAction .value = JSON.parse(savedState) #对于字符串不一致要先进行转换
  }
}
const saveAction = () => {
  localStorage.setItem('showAction ', JSON.stringify(showAction .value))#主要是这一行代码存储值
} #此方法放在要进行存储的位置实现存储并刷新
onMounted(() => {
  loadAtion ()
})
其中showAction是我们可以绑定的要变化的值,首先要获取到值(localStorage.getItem),其次是存储(localStorage.setItem)。

其次还有删除值(localStorage.removeItem),不过一般要指定删除才会用到。

介绍简单的localStorage使用

获取数据方式
//第一种方法获取
let saveName = localStorage.getItem("key"); #补充:let和const均可
//第二种方法获取
let saveName = localStorage.key;
//第三种方法获取
let saveName = localStorage['key'];

存储数据方式

保存数据

localStorage.setItem("key", "value");

//第一种方法存储
let saveName = localStorage.setItem("key");
//第二种方法存储
let saveName = localStorage.key;
//第三种方法存储
let saveName = localStorage['key'];

删除数据
// 删除所有缓存
localStorage.clear();
// 删除指定的键值
localStorage.removeItem("key");

### 解决方案 为了实现在修改控制台中的 token 后能够自动刷新页面而不重载登录状态,可以采用监听存储事件的方式并结合 JWT 认证机制来处理。当检测到 token 发生变化,通过调用特定的方法更新应用内的认证状态。 #### 使用 StorageEvent 监听 Token 变化 现代浏览器支持 `storage` 事件,在同一个域名下的不同窗口或标签页之间共享 localStorage 或 sessionStorage 数据发生变化会触发此事件。利用这一特性可以在一个地方更改 token 后通知其他打开的页面实例[^2]。 ```javascript window.addEventListener('storage', function (e) { if (e.key === 'authToken') { // 假设 token 存储键名为 authToken const newToken = e.newValue; // 更新本地缓存或其他需要的地方 updateLocalState(newToken); // 如果有专门用于管理身份验证的服务,则告知其重新获取用户信息 authService.refreshUserDetails(); } }); ``` #### 刷新界面而非整个页面 对于单页应用程序(SPA),通常不需要完全刷新页面即可反映最新的数据变动。可以通过 React 组件的状态管理和上下文 API 来传播新的认证状态给各个子组件,从而达到局部刷新的效果。 ```jsx import React, { createContext, useState } from "react"; // 创建全局认证上下文 const AuthContext = createContext(); export const AuthProvider = ({ children }) => { const [token, setToken] = useState(localStorage.getItem("authToken")); useEffect(() => { window.addEventListener("storage", handleStorageChange); return () => { window.removeEventListener("storage", handleStorageChange); }; }, []); const handleStorageChange = (event) => { if (event.key === "authToken") { setToken(event.newValue); // 更新当前 context 中的 token } }; return ( <AuthContext.Provider value={{ token }}> {children} </AuthContext.Provider> ); }; ``` #### 结合 Spring Security 和 JWT 进行后台校验 在服务器端,每当接收到带有新 token 的请求,应该立即验证该 token 是否有效,并返回相应的响应给前端。如果发现 token 已经失效或者被篡改,则应提示用户重新登录[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值