【发布时间】:2017-02-25 20:41:02
【问题描述】:
所以我正在尝试构建一个非常基本的用户登录。我正在尝试创建一个用户,然后使用这些凭据登录并取回 JSON Web 令牌。我被困的地方是尝试比较密码然后发送响应。
步骤:
创建用户:
- 输入邮箱和密码
- 盐/哈希用户密码
- 将用户存入数据库
- 返回成功
登录
- 通过请求电子邮件值查找用户
- 如果找到比较密码
- 密码好发送 JSON Web Token
用户模型
email:{
type: String,
required: true,
unique: true
},
password: {
type: String,
required: true
}
用户路线
var express = require('express');
var router = express.Router();
var jwt = require('jsonwebtoken');
var bcrypt = require('bcryptjs');
// Create User
...
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash("superSecret", salt, function(err, hash) {
user.password = hash;
user.save();
res.json({success: true, message: 'Create user successful'});
});
});
...
// Login
...
bcrypt.compare(req.body.password, 'superSecret', function(err, res) {
if(req.body.password != user.password){
res.json({success: false, message: 'passwords do not match'});
} else {
// Send JWT
}
});
所以这里的两个问题是,我无法发送响应,也无法比较密码。完全坚持这一点,任何帮助将不胜感激。
【问题讨论】:
标签: javascript node.js express bcrypt