2016-04-04 12 views
0

Ich versuche, eine sehr einfache Login-Authentifizierung in node.js zu erstellen, mit Bookshelf und sqlite3.Login-Authentifizierung in node.js mit sqlite3 - Bücherregal

Ja, ich weiß, es gibt viele viele Beispiele im Internet, aber keine verwendet entweder sqlite oder Bücherregal, sie basieren alle auf Pass und Mungo.

Wenn ich versuche, die Anmeldung zu überprüfen, erhalte ich die Fehlerdaten.

Dies ist mein Code

Login.js

var express = require('express'); 
var router = express.Router(); 
var knex = require('knex')(require('../knexfile.js').development); 
var bookshelf = require('bookshelf')(knex); 
var app = express(); 

var User = bookshelf.Model.extend({ 
tableName: 'users' 
}); 

router.get('/', function (req, res) { 
res.render('Login'); 
}); 

router.post('/', function (req, res) { 

var userName = req.body.user_name; 
var pw = req.body.password; 
var user_name = User.user_name; 
var password = User.password; 

if (userName == user_name && pw == password) 
{ 
    console.log("Success!"); 
} 
else 
{ 
    console.log("Error!"); 
} 
}); 
module.exports = router; 

Login.ejs

<h2>Login</h2> 
<form method="post"> 
<label>User name</label><br> 
<input type="text" name="user_name" id="user_name"/><br><br> 
<label>Password</label><br> 
<input type="password" name="password" id="password"/><br><br> 
<input type="submit" value="Login"/> 
</form> 

Vielen Dank!

Ich habe versucht, Werte anzeigt, wie vorgeschlagen, und ich erkannte beide

var user_name = User.user_name; 
var password = User.password; 

nicht definiert sind, was bedeutet, es ist etwas falsch mit Abfrage oder etwas sein muss?

UPDATE

enter image description here

UPDATE1

Wenn ich diesen Code versuchen ...

router.post('/', function (req, res) { 
new Users().fetch().then(function (processUsers) { 
    console.log(processUsers.toJSON());  
}); 
}); 

ich Benutzer erhalten angezeigt, der versucht ... alles um sich einzuloggen seiner Daten ... hovewever ... wenn ich das tue:

var us_name = processUsers.user_name; 
console.log(us_name); 

heißt es Wert ist undefined

+0

Wenn Sie die Variablen 'userName',' user_name', 'pw' und' password' direkt vor dem 'if' ausgeben, sind sie das, was Sie erwarten? – Pedro

+0

@Pedro nach der Verwendung von console.log, ich fand heraus, dass user_name = User.user_name und password = User.password sind "Undefined", was bedeutet, dass keine Werte aus der Datenbank zurückgegeben werden ... – aiden87

+0

Zeige mir console.log von processUsers und processUsers .toJSON() bitte (leer den Benutzernamen und das Passwort). – Pedro

Antwort

0

Ich bin nicht sehr vertraut mit Bücherregal, aber Sie können so etwas versuchen:

router.post('/', function (req, res) { 
    new User().fetchAll().then(processUsers).catch(catchErrors); 

    function processUsers(users) { 
     console.log(users); 
     var loggedIn = false; 
     for (var i = 0; i < users.length; i++) { 
      if (users[i].user_name == req.body.user_name && users[i].password == req.body.password) { 
       loggedIn = true; 
       break; 
      } 
     } 
     if (loggedIn) { 
      console.log("Success!"); 
     } else { 
      console.log("Error!"); 
     } 
    } 

    function catchErrors(error) { 
     console.log(error); 
     console.log('An error occured'); 
    } 
}); 

oder

router.post('/', function (req, res) { 
    new User({user_name : req.body.user_name, password: req.body.password}).fetch().then(processUser).catch(catchErrors); 

    function processUser(user) { 
     console.log(user); 
     console.log("Success!"); 
    } 

    function catchErrors(error) { 
     console.log(error); 
     console.log('An error occured'); 
    } 
}); 

Bedenken Sie, dass Sie Passwörter, die auf dem Server gespeichert sind, hacken und salzen möchten. Wenn Sie nicht wissen, was das ist, schauen Sie bitte, bevor Sie dieses Zeug live laufen lassen, da es sehr wichtig ist.

+0

Dies scheint nicht zu funktionieren.Wenn ich die erste Option verwende, bekomme ich "kann nicht lesen Eigenschaft" Benutzername "von null" ".... und wenn ich die zweite Option verwenden, ist alles ein Erfolg, auch wenn ein Benutzer nicht existiert ... – aiden87

+0

Im ersten Fall, was gibt die 'console.log (Benutzer)' zurück? – Pedro

+0

siehe Update – aiden87