仅使用密码创建密码和访问权限

时间:2016-05-11 01:27:11

标签: angularjs node.js mongoose mean-stack

尝试创建管理员面板,管理员用户可以在其中为访问页面创建密码。您需要密码才能访问登录/注册页面。我一直试图用json web令牌来做这件事。我已经使用了MEAN-stack:

访问架构

var accessSchema = new mongoose.Schema({
    password: String
});

创建jwt

function createAccessToken(password) {
    var payload = {
        sub: password._id,
        iat: moment().unix(),
        exp: moment().add(7, 'days').unix()
    };
    return jwt.encode(payload, config.ACCESSCODE_TOKEN_SECRET);
}

登录和注册

app.post('/auth/loginaccess', function (req, res) {
    Access.findOne({ password: req.body.password }, function (err, access) {
    if (!access) {
        return res.status(401).send({ message: 'Invalid password' });
    }
    access.comparePassword(req.body.password, function (err, isMatch) {
        if (!isMatch) {
            return res.status(401).send({ message: 'Invalid password' });
        }
        res.send({ tokenauth: createAccessToken(access) });
    });
  });
  getPasswords();
});

app.post('/auth/signupaccess', function (req, res) {
    Access.findOne({ password: req.body.password }, function (err, existingPw) {
    if (existingPw) {
        return res.status(409).send({ message: 'Password is already taken' });
    }
    var access = new Access({
        password: req.body.password
    });
    access.save(function (err, result) {
        if (err) {
            res.status(500).send({ message: err.message });
        }
        res.send({ tokenauth: createAccessToken(result) });
    });
  });
});

ComparePassword和保存架构

accessSchema.pre('save', function (next) {
    var access = this;
    bcrypt.genSalt(10, function (err, salt) {
        bcrypt.hash(access.password, salt, function (err, hash) {
            access.password = hash;
            next();
        });
    });
});

accessSchema.methods.comparePassword = function (password, done) {
    bcrypt.compare(password, this.password, function (err, isMatch) {
        done(err, isMatch);
    });
};

密码的创建有效,并且已正确加密并插入数据库。但是当我尝试登录时,会在app.post('/ auth / loginaccess')中抛出401错误。

为什么会这样? 任何改善这一点的提示都非常受欢迎。

0 个答案:

没有答案