electron中获取mac地址

electron中获取mac地址

引入
为了方便做单点登录,我们往往需要使用某个唯一标识来标记客户端的设备,mac地址就是一个还不错的选择

思路

我们可以使用Node.js的内置模块os,调用其中的networkInterfaces方法。该方法会返回一个包含网络接口信息的数组对象,通过遍历该数组对象,可以获取到Mac地址,我们先看下调用得到的响应内容

import { networkInterfaces } from "os";
console.log(JSON.stringify(networkInterfaces()));

 

{
        "Ethernet0": [{
                "address": "fe80::803c:6a7b:14b0:f652",
                "netmask": "ffff:ffff:ffff:ffff::",
                "family": "IPv6",
                "mac": "00:0c:29:ea:41:55",
                "internal": false,
                "cidr": "fe80::803c:6a7b:14b0:f652/64",
                "scopeid": 7
        }, {
                "address": "192.168.213.154",
                "netmask": "255.255.255.0",
                "family": "IPv4",
                "mac": "00:0c:29:ea:41:55",
                "internal": false,
                "cidr": "192.168.213.154/24"
        }],
        "Loopback Pseudo-Interface 1": [{
                "address": "::1",
                "netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
                "family": "IPv6",
                "mac": "00:00:00:00:00:00",
                "internal": true,
                "cidr": "::1/128",
                "scopeid": 0
        }, {
                "address": "127.0.0.1",
                "netmask": "255.0.0.0",
                "family": "IPv4",
                "mac": "00:00:00:00:00:00",
                "internal": true,
                "cidr": "127.0.0.1/8"
        }]
}

封装代码

可以看到是个键值对的形式,所以我们直接获取key,然后遍历取值,再获取对象中的mac地址即可:

/**获取mac地址信息 */
export const getMacAddress = function (): string {
  const interfaces = networkInterfaces();
  let macAddress = "";
  for (const interfaceName of Object.keys(interfaces)) {
    const interfaceInfos = interfaces[interfaceName];

    if (interfaceInfos) {
      for (const interfaceInfo of interfaceInfos) {
        if (interfaceInfo.mac && interfaceInfo.mac !== "00:00:00:00:00:00") {
          macAddress = interfaceInfo.mac;
          break;
        }
      }
    }

    if (macAddress.length > 0) break;
  }

  return macAddress;
};

相关推荐

  1. unity Pc获取本机Mac地址

    2023-12-15 11:42:04       61 阅读
  2. vue获取用户的mac地址

    2023-12-15 11:42:04       31 阅读
  3. QT获得本地IP以及MAC地址

    2023-12-15 11:42:04       27 阅读
  4. 获取mac地址,内网ip,当前ip位置信息

    2023-12-15 11:42:04       44 阅读
  5. Conmi的正确答案——ESP32获取MAC地址

    2023-12-15 11:42:04       36 阅读
  6. c#获取本机的MAC地址(附源码)

    2023-12-15 11:42:04       26 阅读
  7. electron持久化cookie的方法,从session获取

    2023-12-15 11:42:04       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-15 11:42:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-15 11:42:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-15 11:42:04       82 阅读
  4. Python语言-面向对象

    2023-12-15 11:42:04       91 阅读

热门阅读

  1. Qt插件开发与QPluginLoader的使用

    2023-12-15 11:42:04       55 阅读
  2. 安卓10 flutter webview 回退会闪退

    2023-12-15 11:42:04       67 阅读
  3. 数据结构:第9关:删除链表中满足区间值的结点

    2023-12-15 11:42:04       67 阅读
  4. 【无标题】

    2023-12-15 11:42:04       51 阅读
  5. 逻辑回归的损失函数和目标函数

    2023-12-15 11:42:04       48 阅读
  6. Vue学习笔记-Vue3对响应式数据的判断

    2023-12-15 11:42:04       49 阅读