如何为 Javascript 中的 localStorage 项目设置过期日期?

How set expiration date to an localStoarge item in Javascript?

我正在努力为我的网站提供高级访问权限。这样做时,我希望将 localStorage 项设置为 1 的登录名过期并在一个月后被删除。我在网上搜索过,但因为我还在学习 JavaScript 和 jQuery 而感到困惑。你能帮我设置 localStorage 项的过期时间吗?这是设置 localStorage:

的代码行
localStorage.setItem('ispremium', '1');

我的网站在 Blogger 平台上,如果这很重要的话!

通常这会在服务器端解决。如果用户在某些浏览器上选择“清除浏览历史记录”,localStorage 可能会被清除。如果用户使用多个浏览器或隐身模式,它可能无法跨会话使用。除此之外,具有一点技术知识的人可以轻松地将“ispremium”标志插入他的 localStorage 以访问您的高级功能。

如果你仍然想通过客户端解决这个问题,你可以存储一个时间戳而不是一个布尔标志,并检查当前时间是否仍在有效范围内。 LocalStorage 本身不允许您设置条目的到期日期。

您可以将实际值设置为用户首次加入和过期时间。每当用户再次打开该网站时,您都需要检查该到期日期。但这是非常不安全的,你不应该在会话中这样做。为了回答您的问题,您可以执行以下操作:

const NAMESPACE = 'MY_ID';
const TIMESTAMP_MODEL = {
  initial: null,
  expiresOn: null
};
const TIMESTAMP = Date.now();

if (!JSON.parse(localStorage.getItem(NAMSPACE))) {
  // when the user access your website for the first time, set the initial and expiresOn values:

  localStorage.setItem(NAMESPACE, JSON.stringify({
    initial: TIMESTAMP,
    expiresOn: TIMESTAMP + 1000*60*60*24*30 // 1month in ms
  }));
} else {
    // then, when user access the website again, check the expiresOn, it it's value is bigger than current date
  const EXPIRE_DATE = JSON.parse(localStorage.getItem(NAMESPACE)).expiresOn;

  if (Date.now() > EXPIRE_DATE) {
    console.log('session expired');
  } 
}