【问题标题】:Node JS and Angular Email Verification: Anyway to send html in a response?Node JS 和 Angular 电子邮件验证:无论如何要在响应中发送 html?
【发布时间】:2021-04-29 14:22:26
【问题描述】:

首先,我想澄清一下,我知道如何在 Angular 中使用在 NodeJS 中创建的 APi。我遇到的问题有点棘手。

我有一个功能可以验证注册时使用的电子邮件:

exports.confirmEmail = function (req, res) {
    ConfirmToken.findOne({
        token: req.params.token
    }, function (err, token) {

        if (err) {
            return res.status(500).send({
                message: "Internal Server Error " + err
            })
        }

        // token is not found into database i.e. token may have expired 
        if (!token) {
            return res.status(400).send({
                message: 'Your verification link may have expired. Please click on resend for verify your Email.'
            });
        }
        // if token is found then check valid user 
        else {
            Account.findOne({
                _id: token._accountId,
                email: req.params.email
            }, function (err, user) {

                if (err) {
                    return res.status(500).send({
                        message: "Internal Server Error " + err
                    })
                }
                // User does not exist
                if (!user) {
                    return res.status(401).send({
                        message: 'The account does not exist'
                    });
                }
                // user is already verified
                else if (user.isVerified) {
                    return res.status(200).send('User has been already verified. Please Login');
                }
                // verify user
                else {
                    // change isVerified to true
                    user.isVerified = true;
                    user.save(function (err) {
                        // error occur
                        if (err) {
                            return res.status(500).send({
                                message: err.message
                            });
                        }
                        // account successfully verified
                        else {
                            return res.status(200).send('Your account has been successfully verified');
                        }
                    });
                }
            });
        }

    })
}

这是我注册帐户时收到的回复

现在我的问题是:有没有办法传入 html 代码或让它显示在自定义 Angular 组件中,而不是像这样在 Web 浏览器上显示为简单的纯文本

【问题讨论】:

  • Node 和 Angular 是两种不同的技术。 Angular 中没有什么叫 NodeJS
  • 您可以发送 Html 代码而不是字符串作为响应。然后在Angular组件中使用innerHtml来渲染Html。
  • 你为什么不写一个角度组件来在你得到响应时显示?或者只是附加一些样式?小心以这种方式传递 html,您可能容易受到 XSS 攻击。
  • @Charlie 是的,我知道。我在我的问题中说,我在 nodejs 中创建了用于 angular 的 API。
  • @ale917k 感谢您的建议!出于某种原因,我忘记了您可以在响应中发送的不仅仅是一个字符串。我不知道为什么,因为我是用其他方法做的

标签: javascript node.js angular express nodemailer


【解决方案1】:

您的服务应将 isVerified 状态发送回客户端。你现在只发送一个字符串

return res.status(200).send('Your account has been successfully verified');

基于此状态,我们称之为 isVerified 您的 Angular 应用程序将呈现 isVerfiedComponent.ts 或 notVerifiedComponent.ts

【讨论】:

  • 天哪!当然,我是为后端的其他方法这样做的,但不是为了这个,所以我迷路了:所以 res.status(200).send({ message: "The account has beenverified", isVerified: true}):我想我很难理解逻辑,因为点击来自 gmail 而不是角度组件的验证
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 2013-09-20
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
  • 2019-03-09
  • 2014-06-20
  • 2023-03-15
相关资源
最近更新 更多