Node.js 节点js API REST服务身份验证翻译文本邮件节点邮件程序
我已经使用NodeJS和express开发了一个RESTAPI。 当用户进行注册时,我使用node mailer发送邮件。 我有身份验证服务(POST方法),它读取通过应用程序传递的语言代码,并发送带有翻译文本和令牌的电子邮件以验证注册。带有令牌的链接是发送其他邮件的GET请求。 我如何才能说得到的方法是使用哪种语言代码,这样就可以发送一封带有翻译的邮件 Hi已将此代码实现为验证令牌:Node.js 节点js API REST服务身份验证翻译文本邮件节点邮件程序,node.js,angularjs,express,Node.js,Angularjs,Express,我已经使用NodeJS和express开发了一个RESTAPI。 当用户进行注册时,我使用node mailer发送邮件。 我有身份验证服务(POST方法),它读取通过应用程序传递的语言代码,并发送带有翻译文本和令牌的电子邮件以验证注册。带有令牌的链接是发送其他邮件的GET请求。 我如何才能说得到的方法是使用哪种语言代码,这样就可以发送一封带有翻译的邮件 Hi已将此代码实现为验证令牌: // Verification token router.get('/verification/:langua
// Verification token
router.get('/verification/:language/:token/', function(req, res, next) {
const language = req.params.language;
console.log(language);
// Check for validation errors
var errors = req.validationErrors();
if (errors) return res.status(400).send(errors);
// Find a matching token
Token.findOne({ token: req.params.token }, function (err, token) {
//if (!token) return res.status(400).send({status: 'ko',error: {type: 'not-verified', msg: 'We were unable to find a valid token. Your token my have expired.'}} );
if (!token) return res.redirect('https://localhost/expiredtoken');
// If we found a token, find a matching user
User.findOne({ _id: token._userId }, function (err, user) {
if (!user) return res.status(400).send({ msg: 'We were unable to find a user for this token.' });
//if (user.isVerified) return res.status(400).send({status: 'ko',error:{type: 'already-verified', msg: 'This user has already been verified.'}});
if (user.isVerified) return res.redirect('https://localhost/userverified');
// Verify and save the user
user.isVerified = true;
user.save(function (err) {
if (err) { return res.status(500).send({ msg: err.message }); }
//res.status(200).send({status: 'ok', data: { msg: 'The account has been verified. Please log in.'}});
res.redirect('https://localhost/login');
//
var text_email;
if (language == 'en') {
text_email = 'Hi'
}
if (language == 'it') {
text_email = 'Ciao'
}
var client = nodemailer.createTransport(sgTransport(options));
var email = {
from: 'noreply@test.com',
to: user.email,
subject: 'Registration successfully confirmed',
text: text_email
};
client.sendMail(email, function(err, json){
if (err){
return res.status(500).send({ msg: err.message });
}
else {
res.status(200).send({status: 'ok', data: { msg: 'A verification email has been sent to ' + user.email + '.'}} )
}
});
//
});
});
});
});
验证有效,发送邮件也有效,但应用程序崩溃,出现以下错误:
错误[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头
有什么帮助吗???请使用GET
http://localhost/route?language=en
如果您使用的是
express
,您可以从路由处理程序中使用req.query.language
访问语言值。您可以使用GET方法,在路由中使用参数
例如:
路线:http://your-app-domain/route?language=en
获取语言:
...
app.get('/route', (req, res) => {
const language = req.query.language;
console.log(language); // en
});
希望这有帮助 如果您在验证令牌时有可用的语言代码,您可以在GET方法的查询参数中发送语言代码。在这种情况下,您应该接受答案,并为您获得的新错误打开一个新问题对不起!我最后在路线的名字上自欺欺人。我已经更正了答案。