gpt4 book ai didi

angularjs - 用户注册无效并通过 OTP 激活

转载 作者:可可西里 更新时间:2023-11-01 10:21:50 25 4
gpt4 key购买 nike

以下是身份验证流程的步骤:

  1. 用户通过输入他的详细信息进行注册,他将向他的邮箱发送了一个 OTP。
  2. 此时用户详细信息存储到mongoDB。
  3. 通常在验证 OTP 后,用户可以登录应用。但就我而言,在验证 OTP 之前,用户可以登录申请。

如何解决这个问题,请帮助我。我的一些代码如下所示。

模型.js

var UserSchema = new Schema({
name: String,
email: {type: String, required: true, select: true},
mobile: {type: String, required: true, select: true},
password: {type: String, required: true, select: true},
});

Controller .js

vm.submitPost =  function(userData){
$http({
url: 'http://192.168.2.8:7200/api/pages/auth/register',
method: 'POST',
data: userData
}).then(function(res) {
if(res.data.success){
$location.path('/pages/auth/otp');
} else {
alert('Please fill all credentials');
}
}, function(error) {
alert(error.data);
});
};

Node .js

router.post('/pages/auth/register',function(req, res, next){
var user = new User({
name: req.body.username,
email: req.body.email,
password: req.body.password,
mobile: req.body.mobile,
});

var secret = "mysecretkey";
var code = otp.generate(secret);
var insertOtp = function(db, callback) {
db.collection('otp').createIndex( { "createdAt": 1 }, { expireAfterSeconds: 10 } );
db.collection('otp').insertOne( {
"createdAt": new Date(),
"generatedOtp": code,
"logEvent": 2,
"logMessage": "Success!"
}, function(err, result) {
assert.equal(err, null);
callback(result);
});
};

MongoClient.connect(config.database, function(err, db) {
assert.equal(null, err);
insertOtp(db, function(err,docs) {
db.close();
});
});

var mailOptions={
to : req.body.email,
subject : 'OTP',
text : "Your One-Time Password is "+code
}
transport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
res.end("error");
}else{
res.end("sent");
}
});

user.save(function(err){
if(err){
res.send(err);
return;
}
res.json({
success:true,
message: 'User has been created!'
});
});
});

最佳答案

当用户通过 OTP 验证时,将默认值为 false 的 active 属性添加到您的模式,然后将此属性设置为 true 并允许用户在该属性为 true 时登录。

var UserSchema = new Schema({
name: String,
email: {type: String, required: true, select: true},
mobile: {type: String, required: true, select: true},
password: {type: String, required: true, select: true},
active:{ type: 'Boolean',
default: false}
});

关于angularjs - 用户注册无效并通过 OTP 激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com