2013-10-14 51 views
0

我試圖製作和存儲用戶名和密碼在明文。我沒有做任何類型的身份驗證(我知道我可以使用節點護照來做到這一點,並加密,但我只是學習JavaScript,所以我只是想玩弄)如何驗證數組中的對象?

我有一個對象,我全球有這樣的定義:

var obj= {username: req.body.username, 
      password: req.body.password} 

,我推到我registeredUsers陣列:

var registeredUsers = new Array(); 

我的問題是,我希望能夠做一些事情,如:

if((($.inArray(username, registerdUsers) == username && 
($.inArray(password, registerdUsers)) == password){  
    res.redirect("/?error=Already Registered"); 
    } 

這不起作用,我該如何檢查我的對象的兩個值,看看它們是否包含在我的數組中?

這裏是我的情況下,任何人這樣做了驗證的功能是好奇:

var user; 

for(var i = 0; user = registeredUsers[i]; i++) { 
    if(user.username === username) 
     break; 
} 

檢查:

function ensureAuthentication(req, res, next){ 
    //push object onto the registeredUsers array 
    registeredUsers.push(obj); 
    //if the user is already registered, throw error 
    if (($.inArray(username, registeredUsers) && ($.inArray(password, registeredUsers)) {//obj.contains() username){ 
     res.redirect("/?error=Already Registered"); 
    } 
    //if new user 
    else{ 
     authentication.push(obj); 
     console.log("added new user); 
     //redirect to homepage 
     res.rediret("/"); 
    } 
} 

function login(req, res) { 
    //var username = req.body.username; 
    req.session.username = username; 
    req.session.password = password; 
    loggedInUsers[username] = LoggedIn; 
    if((($.inArray(username, registerdUsers) == username && ($.inArray(password, registerdUsers)) == password){ 
     //increase login count 
     for(users in loggedInUsers){ 
      ++loginCount; 
      console.log("Login Count: ", loginCount); 
     } 
     //redirect to login page 
     res.redirect("/users") 
    } 
    else{ 
     //print out error message 
     res.redirect("/?error=Error: incorrect username/password"); 
    } 
} 
+0

'inArray'返回數字,這應該做什麼'$ .inArray(username,registerdUsers)==用戶名' – elclanrs

+0

這是什麼'$'的東西? – Ryan

+0

@minitech,我懷疑lodash或下劃線 –

回答

1

通過用戶名查找對象密碼:

var valid = user && user.password === password; 
1

$ .inArray就像是Java的功能的indexOf如果obj是數組中返回的位置的索引,否則返回-1

因此,像..

if((($.inArray(username, registerdUsers) !== -1 && 
($.inArray(password, registerdUsers)) !== -1){  
    res.redirect("/?error=Already Registered"); 
} 

..would檢查以確保您沒有任何具有完全相同密碼的重複用戶,但允許重複的用戶。

我認爲你正在尋找的東西如..

if($.inArray(username, registeredUsers) !== -1){  
    res.redirect("/?error=Already Registered"); 
} 

它說,如果registeredUsers數組中存在的用戶名,然後給錯誤味精「已註冊」

+0

我應該說我使用的是服務器端JavaScript,而不是客戶端,所以我不能使用$符號...但它確實幫助我更好地理解,謝謝! – Sarah