我试图创建一个网站(供个人使用),人们可以互相发短信,上传文件/照片等。
我想为数据库中的每个用户生成一个令牌,仅仅是为了识别没有昵称的用户。我有一个函数,它生成一个令牌和一个数据库,在那里我有我所有的用户。
问题是我真的不知道如何检查:
( a)数据库中已经存在用户。
( b)如果存在,如何给它们分配令牌。
( c)如果不创建一个新的标记,也会为它们分配令牌。
这是我的代码,我用Google Firebase用JS编写了所有东西
firebase.initializeApp(firebaseConfig);
const db = firebase.database();
const username = prompt("Username:");
const receiver = prompt("Receiver's name:");
document.getElementById("send-message").addEventListener("submit", postChat);
function postChat(e)
{
e.preventDefault();
const timestamp = Date.now();
const chatTxt = document.getElementById("chat-txt");
const message = chatTxt.value;
chatTxt.value = "";
db.ref("messages/" + username + "/" + receiver + "/" + timestamp).set({
usr: username,
msg: message,
});
db.ref("messages/" + receiver + "/" + username + "/" + timestamp).set({
usr: username,
msg: message,
});
}
const fetchChat = db.ref("messages/" + username + "/" + receiver + "/");
fetchChat.on("child_added", function (snapshot)
{
const messages = snapshot.val();
const msg = "<li>" + messages.usr + " : " + messages.msg + "</li>";
document.getElementById("messages").innerHTML += msg;
});这就是我生成令牌的方式
function generateAToken()
{
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
let token = "";
for(let i = 0; i < 32; i++)
{
let tmp = Math.floor(Math.random() * 62);
token += characters[tmp];
}
}现在一切都很好,关键是当我在提示中输入某些内容时,它会立即运行一个函数,解决我前面描述的关键问题。
这就是现在JSON的样子
{
"messages": {
"user1": {
"user2": {
"1656608940603": {
"msg": "hi",
"usr": "user1"
},
"1656608958447": {
"msg": "hey, whats good?",
"usr": "user2"
}
}
},
"user2": {
"user1": {
"1656608940603": {
"msg": "hi",
"usr": "user1"
},
"1656608958447": {
"msg": "hey, whats good?",
"usr": "user2"
}
}
}
}
}如果网站的用户名和接收者的名字是user1和user2,那么这个网站现在的样子就在屏幕上。
我是一个新的环境,所以如果有人想要帮助使用简单的语言,因为你会与一个孩子交谈。
祝大家今天过得愉快;)
发布于 2022-06-30 17:52:06
通常,不应将令牌保存在数据库中,
我想的是:
用户输入用户名和密码,在您的代码中,您将使用某种算法或库(crypto,JWT)在注册时加密密码。
在登录-验证用户的加密密码从数据库(注册阶段),是相同的密码加密在登录(登录阶段)。
所以破门而入:
我希望我说的话有道理。
https://stackoverflow.com/questions/72819826
复制相似问题