微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在ExpressJS中使用本地护照策略和密码更改密码?

如何解决如何在ExpressJS中使用本地护照策略和密码更改密码?

下面是我正在尝试的代码index.js,并且根据salthash更改密码时,它不起作用。(将它们保存在数据库中)我一直在获取错误未定义为setPassword。我也认为我也犯了代码错误。我想要使​​用'route来更改密码的确切passport-local' Strategy代码

PS 。我也能够成功注册用户登录。我只想让他选择更改密码。

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;

   User.findOne({id: req.user.id},function (err,data) {
             console.log("came inside api changePassword else condition inside User.findOne");
             if (err) {
              console.log(err);
             }
             else {
           data.setPassword(req.body.newPass,function(err,datas){
             if(datas) {
             data.save(function (err,datass) {
              if (err) {
                res.render('settingsClient',{errorMessages: err});
              } else {
                console.log("Hash and Salt saved");
              }
            });
          }
          else {
            console.log("setPassword error"+ err);
          }
           });
        }
          })

这是 Models (user.js),用于在用户注册时以哈希和盐的形式保存密码。

var mongoose = require('mongoose');
var crypto = require('crypto');

var userSchema = new mongoose.Schema({
  email: {
    type: String,unique: true,required: true
  },name: {
    type: String,hash: String,salt: String


});

userSchema.methods.setPassword = function(password) {
  this.salt = crypto.randomBytes(16).toString('hex');
  this.hash = crypto.pbkdf2Sync(password,this.salt,1000,64,'sha1').toString('hex');
};

userSchema.methods.validPassword = function(password) {
  var hash = crypto.pbkdf2Sync(password,'sha1').toString('hex');
  return this.hash === hash;
};

module.exports = mongoose.model('User',userSchema);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。