问题描述
使用ReactJS开发Web应用程序。我需要确保没有用户可以同时登录多个设备。为了识别设备,我需要生成一个唯一的设备ID。我尝试了很多答案,但是没有找到任何针对reactjs / javascript的适当解决方案。我试图收集OS / PC信息并自己生成,但是我只有 oscpu:“ Windows NT 10.0; Win64; x64” 平台:“ Windows NT” 使用window.navigator。
请帮助生成唯一的PC ID。
解决方法
您可以为此使用Math.random()
或使用
- 使用Crypto模块
<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