有兩種方法可以檢查登錄,它們都使用一次查詢
let where = {
username
};
//check username first
let result = await UserModel.findOne(where)
if (result != null) {
if (result.password === password) {
return done(null, result)
} else {
return done(null, false, 'wrong password')
}
} else {
return done(null, false, 'user does not exist')
}
和
let where = {
username,
password
};
//check username and password
let result = await UserModel.findOne(where)
if (result != null) {
return done(null, result)
} else {
return done(null, false, 'wrong password or username')
}
哪個更好,為什么?謝謝你。
uj5u.com熱心網友回復:
問自己這個問題。
let query = {
matchValue: "someValue",
someValue: { $gt: 1 },
someOtherValue: { $gte: 1 }
}
const results = await model.findOne(query)
if (results) // do something
對比
let query = {
matchValue: "someValue"
}
const results = await model.findOne(query);
if (results.someValue > 1 && results.someValue >== 1){
... do something.
}
如果可以通過 mongodb(性能更高)進行檢查,為什么要在 javascript 中進行呢?
除了性能之外,您的兩個邏輯都以相同的方式作業,并回傳相同的結果。
無論結果是什么(無效的用戶名或密碼),對前端的回應應該始終是“無效的用戶名/密碼”
uj5u.com熱心網友回復:
好吧,根據我的說法,您應該首先詢問用戶名,如果與資料庫匹配,那么我們應該詢問密碼。如果您向用戶詢問用戶名,則應盡快驗證該用戶。否則,用戶可能會在他們的聯系資訊中打錯字,然后花費大量時間使用您的服務,但在下次嘗試登錄時卻發現沒有與他們的資訊匹配的帳戶。這些帳戶通常是孤立的并且在沒有人工干預的情況下無法恢復。更糟糕的是,聯系資訊可能屬于其他人,將帳戶的完全控制權交給第三方。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/430438.html
上一篇:VBA類繼承
