首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不确定如何检查用户是否已在数据库中拥有自己的令牌。

问不确定如何检查用户是否已在数据库中拥有自己的令牌。
EN

Stack Overflow用户
提问于 2022-06-30 17:29:37
回答 1查看 33关注 0票数 0

我试图创建一个网站(供个人使用),人们可以互相发短信,上传文件/照片等。

我想为数据库中的每个用户生成一个令牌,仅仅是为了识别没有昵称的用户。我有一个函数,它生成一个令牌和一个数据库,在那里我有我所有的用户。

问题是我真的不知道如何检查:

( a)数据库中已经存在用户。

( b)如果存在,如何给它们分配令牌。

( c)如果不创建一个新的标记,也会为它们分配令牌。

这是我的代码,我用Google Firebase用JS编写了所有东西

代码语言:javascript
复制
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;
});

这就是我生成令牌的方式

代码语言:javascript
复制
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的样子

代码语言:javascript
复制
{
  "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,那么这个网站现在的样子就在屏幕上。

在这里输入图像描述!

我是一个新的环境,所以如果有人想要帮助使用简单的语言,因为你会与一个孩子交谈。

祝大家今天过得愉快;)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-30 17:52:06

通常,不应将令牌保存在数据库中,

我想的是:

用户输入用户名和密码,在您的代码中,您将使用某种算法或库(crypto,JWT)在注册时加密密码。

在登录-验证用户的加密密码从数据库(注册阶段),是相同的密码加密在登录(登录阶段)。

所以破门而入:

  1. 用户注册加密后保存在数据库中的->密码。
  2. 用户登录->验证加密密码与加密后的当前密码相同。

我希望我说的话有道理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72819826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档