请告诉我在MERN Stack中注册新帐户时如何验证电子邮件??我想发送一封带有链接的电子邮件,以便重定向到指向用户电子邮件的页面。这是我签名up...please的node.js代码,告诉我如何在这里添加验证部分?
router.post('/abc',function(req,res,next){
User.find({email:req.body.email}).then(function(details){
if(details.length>0){
return res.status(400).json({
message:"email exist"
});
}
else{
bcrypt.hash(req.body.pass,10,(err,hash)=>{
if(err){
return res.status(500).json({
error:err
});
}
else{
var det = new User({
email:req.body.email,
password:hash,
name:req.body.name,
address:req.body.address,
mobile:req.body.mobile,
type:req.body.type
});
det.save((err,doc)=>{
if(!err){
res.status(200).send(doc);
console.log("signed")
console.log(doc);
}
else{
console.log('Error in sending Employees :'+ JSON.stringify(err,undefined,2));
return res.status(500).json({
error:err
});
}
});
}
});
}
});
});
发布于 2018-10-23 09:25:58
外部路由器功能
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
内部路由器功能
if (validateEmail(req.body.email)) {
console.log('valid email');
} else {
console.log('invalid email');
}
您可以使用类似express validator这样的替代库来完成相同的工作。
发布于 2020-01-09 19:02:44
通常,您需要某种电子邮件应用程序接口;我个人使用Twilio's SendGrid应用程序接口(非常容易设置和实现)。使用此api,您将从后端注册路由构造并发送一个url (电子邮件验证url)。实现很简单,如下所示:
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const link = 'http://'+req.headers.host+'/api/users/register/verifyEmail/'+token;
const htmlContent = 'some html content';
const msg = {
to: newUser.email,
from: process.env.VALIDATION_EMAIL_SENDER,
subject: 'Some email subject',
html: htmlContent,
};
sgMail.send(msg, (err) => {
if(Object.entries(err).length > 0) {
return res.status(500).json({success: false, msg: "Something went wrong; can't send validation email.", err});
}
res.status(200).json({success: true, msg: "Check your email and verify account to
proceed.", user: {newUser});
});
然后,您将有另一个后端路由,它将验证链接的有效性,这是您决定的标准。
https://stackoverflow.com/questions/52944068
复制相似问题