![](/img/trans.png)
[英](Node.js+express+MongoDB), how to OPTIMIZE an frequently-used variable?
[英]How to do form Authentication using node.js+Express+Mongodb?
我正在嘗試使用Node.js + Express + MongoDb.Created登錄頁面來做小型應用程序。 現在我要從登錄頁面發布數據,並根據數據庫驗證用戶名和電子郵件。 我不知道該怎么做。 我的登錄頁面視圖(翡翠):
extends layout
body
block content
.container
form.form-signin(action="/login", method="post")
h2.form-signin-heading Please sign in
input.input-block-level(type="text", name="username", placeholder="username")
input.input-block-level(type="text", name="text", placeholder="user mail")
label.checkbox.
<input type="checkbox" value="remember-me" /> Remember me
button.btn.btn-large.btn-primary(type="submit") Sign in
router.post('/login', function(req, res, next) {
var uname=req.body.username;
var email=req.body.email;
var db = req.db;
var collection = db.get('userlist');
if(check with database uname and email present or not)
{
//if true
res.render('index', { title: 'Express' });
}
else
{
//render loginpage with error msg
res.render('login', { title: 'Express' });
}
});
請幫忙。
有很多方法可以達到目標。 我可以向您推薦以下內容。
這是下面的鏈接
代碼示例:
//User Schema
/*
* Generate Hash to save password
*/
userSchema.methods.generateHash = function (password) {
// some service to encrypt and check passwords
return encryptService.encrypt(password);
};
/*
* Check if password is valid
*/
userSchema.methods.validPassword = function (password) {
var user = this;
var checkPasswordParams = {
password: password,
hash: user['authentication']['hash']
};
// some service to encrypt and check passwords
return encryptService.compare(checkPasswordParams);
};
//encrypt service
//here are examples from bcrypt page
bcrypt.hash("bacon", null, null, function(err, hash) {
// Store hash in your password DB.
});
bcrypt.compare("bacon", hash, function(err, res) {
});
bcrypt.compare("veggies", hash, function(err, res) {
});
//Example Of Passport Local Strategy (Username + Password)
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
在這里您可以找到令牌認證的好例子:
https://scotch.io/tutorials/authenticate-a-node-js-api-with-json-web-tokens
我建議使用此npm模塊來創建和檢查令牌:
npm安裝jwt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.