我目前正在使用電子郵件地址或電話號碼做一個非常簡單和基本的登錄系統。沒有密碼。
沒什么可隱藏的,只是一個資訊中心。
我想要達到的目標:
- 檢查用戶輸入的電子郵件是否存在于用戶陣列中。
- 檢查用戶輸入的電話是否存在于用戶陣列中。檢查電子郵件和電話是否與同一用戶匹配。
- 檢查電子郵件是否錯誤和電話是否掉線(反之亦然) - 它仍然可以找到正確的用戶。
目前正在發生的事情:
- 如果輸入了電子郵件,它會找到正確的用戶。
- 如果電子郵件輸入錯誤且電話號碼正確,我會收到未定義的錯誤。
- 如果兩者都錯了,我會收到一個服務器錯誤,說明電子郵件未定義。
代碼:
用戶物件
const users = [
{
email: "[email protected]",
phone: "0798888888",
name: "John Doe",
access: ["home", "blah", "etc"]
},
{
email: "[email protected]",
phone: "079000000",
name: "Fake Doe",
access: ["home", "etc"]
}
];
主要代碼:
app.post("/in", async (req, res) => {
let email = req.body.email,
phone = req.body.phone;
let conditions = !!email ? { email } : { phone };
let data = users.find((x) => x.email === conditions.email || x.phone === conditions.phone);
let pass = data.email || data.phone !== undefined;
console.log(pass);
if (pass) {
if (conditions.email && conditions.email === data.email) {
pass = true;
}
if (conditions.phone && conditions.phone === data.phone) {
pass = true;
}
}
if (pass) {
res.cookie("JWT", jwtSign(req.body.email, data.name, data.access));
res.status(200);
res.send("OK");
} else {
res.status(200);
res.send("Invalid user/password");
}
});
uj5u.com熱心網友回復:
使用電子郵件地址或電話號碼登錄系統
必須找到一種方法來處理代碼。這是一個作業版本!
const users = [{
email: "[email protected]",
phone: "079000000",
name: "Fake Doe",
access: ["home", "etc"]
}
];
function checkUserExists(email, phone) {
return !!users.find((x) => x.email === email || x.phone === phone);
}
console.log(checkUserExists('[email protected]', '0490')); //email
console.log(checkUserExists('[email protected]', '079000000')); //phone
console.log(checkUserExists('[email protected]', '079000000')); //both
console.log(checkUserExists('[email protected]', '0490')); //none
所以替換這個:
app.post("/in", async (req, res) => {
let email = req.body.email,
phone = req.body.phone;
let conditions = !!email ? { email } : { phone };
let data = users.find((x) => x.email === conditions.email || x.phone === conditions.phone);
let pass = data.email || data.phone !== undefined;
console.log(pass);
if (pass) {
if (conditions.email && conditions.email === data.email) {
pass = true;
}
if (conditions.phone && conditions.phone === data.phone) {
pass = true;
}
}
if (pass) {
res.cookie("JWT", jwtSign(req.body.email, data.name, data.access));
res.status(200);
res.send("OK");
} else {
res.status(200);
res.send("Invalid user/password");
}
});
有了這個:
function userExists(email, phone) {
return !!users.find((x) => x.email === email || x.phone === phone);
}
app.post("/in", async (req, res) => {
if (userExists(req.body.email, req.body.phone)) {
res.cookie("JWT", jwtSign(req.body.email, data.name, data.access));
res.status(200);
res.send("OK");
} else {
res.status(200);
res.send("Invalid user/password");
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/436972.html
標籤:javascript 节点.js 数组 表示 jwt
