如何在ReactJS中生成唯一的PC /设备ID?多设备登录限制目的

问题描述

使用ReactJS开发Web应用程序。我需要确保没有用户可以同时登录多个设备。为了识别设备,我需要生成一个唯一的设备ID。我尝试了很多答案,但是没有找到任何针对reactjs / javascript的适当解决方案。我试图收集OS / PC信息并自己生成,但是我只有 oscpu:“ Windows NT 10.0; Win64; x64” 平台:“ Windows NT” 使用window.navigator。

请帮助生成唯一的PC ID。

解决方法

您可以为此使用Math.random()或使用

<script>
var crypto = require("crypto");
    var id = crypto.randomBytes(20).toString('hex');
    console.log(id)
    // "bb5dc8842ca31d4603d6aa11448d1654"
</script>

  • 使用uuid模块

<script>
var uuid = require("uuid");
    var id = uuid.v4();
    console.log(id)
    // "110ec58a-a0f2-4ac4-8393-c866d813b8d1"
</script>

  • 或使用您自己的逻辑代码

<script>
// dec2hex :: Integer -> String
    // i.e. 0-255 -> '00'-'ff'
    function dec2hex (dec) {
      return dec < 10
        ? '0' + String(dec)
        : dec.toString(16)
    }
    
    // generateId :: Integer -> String
    function generateId (len) {
      var arr = new Uint8Array((len || 40) / 2)
      window.crypto.getRandomValues(arr)
      return Array.from(arr,dec2hex).join('')
    }
    
    console.log(generateId())
    // "82defcf324571e70b0521d79cce2bf3fffccd69"
    
    console.log(generateId(20))
    // "c1a050a4cd1556948d41"
</script>

基于this

的答案

为获得最佳实践,您可以与后端服务器和数据库集成以为数据库提供完美的唯一ID