在 WebSocket 连接建立之前进行身份验证时,token 的存储方式有以下几种常见选择:


一、客户端存储

(一)本地存储(LocalStorage)

  • 在现代浏览器中,可以使用 LocalStorage 来存储 token。LocalStorage 是一种键值对形式的存储,数据会一直存储在浏览器中,直到被手动清除或达到存储期限(没有设置期限的情况下,数据会一直存在)。
      localStorage.setItem('token', 'your_token_value');

    当需要使用 token 进行身份验证时,可以从 LocalStorage 中获取:

      const token = localStorage.getItem('token');

    (二)会话存储(SessionStorage)

  • SessionStorage 的工作方式与 LocalStorage 类似,但存储的数据仅在当前会话期间有效(即只要浏览器处于打开状态,数据就可用;一旦浏览器关闭,数据就会被清除)。
      sessionStorage.setItem('token', 'your_token_value');

    (三)Cookie

  • 通过设置 Cookie 来存储 token。Cookie 可以设置过期时间、路径、域名等属性来控制其有效性和作用范围。
      document.cookie = 'token=your_token_value; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/';

    二、服务器端存储

    (一)数据库

  • 将 token 存储在数据库(如 MySQL、MongoDB、Redis 等)中。可以创建一个专门的表或集合来存储用户的 token 以及相关的用户信息和 token 的有效期等。
  • 例如,在关系型数据库 MySQL 中,可以创建一个 tokens 表来存储:
      CREATE TABLE tokens (
        id INT PRIMARY KEY AUTO_INCREMENT,
        user_id INT,
        token VARCHAR(255),
        expiration_date TIMESTAMP
      );

    (二)缓存服务器

  • 使用缓存服务器(如 Redis)来存储 token。Redis 具有高性能和快速存取的特点,非常适合存储需要频繁访问和验证的 token 数据。
      const redis = require('redis');
      const client = redis.createClient();
    
      client.set('token:user_id', 'your_token_value', 'EX', 3600); // 设置 token 并设置 1 小时后过期

    您可以根据您的应用需求和架构选择合适的 token 存储方式。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐