首页 > 解决方案 > 从电子电子邮件中打开密码重置链接

问题描述

嗨,我有一个用 React 构建的 Electron 应用程序。我的密码重置令牌链接通过电子邮件发送,然后该链接打开浏览器以重置用户密码。如果可能的话,我希望在电子应用程序中打开该电子邮件链接。不幸的是,我还没有发现任何有用的东西,我什至不知道从哪里开始。任何信息将不胜感激。

如果有帮助,这是我向用户电子邮件发送令牌链接的功能

app.post('/forgotPassword', async function(req, res){
    const name = req.body.name;
    const mail = req.body.email;
    crypto.randomBytes(32, (err, buffer)=>{
      if(err){
        console.log(err)
      }
      console.log(buffer)
      const token = buffer.toString("hex")
      console.log(token) 

    User.findOne({userName: name, email: mail})
      .then(user =>{
        if(!user){
          return res.json({
            status: 404,
            message: "No user found with Entered User name and email"
          })
        }
        user.resetToken = token
        user.expireToken = Date.now() + 1800000
        user.save().then((result)=>{
          transporter.sendMail({
            from: process.env.EMAIL,
            to: mail,
            subject: "Password Reset",
            html: `
              <p>Your requested password reset</p>
              <h5>Click on this <a href="http://localhost:3000/${token}">link<a/> to reset password</h5>
            `
          })
          res.json({
            status: 200,
            message: "Password Reset email Sent please check your inbox"
          })
        })
      })
    })
  })

总之:我希望用户密码重置链接(通过电子邮件发送)在电子而不是浏览器中打开

提前致谢 :)

标签: javascriptreactjselectronreset-password

解决方案


由于您需要来自用户邮件客户端(浏览器、Outlook 等)的链接来打开您的电子应用程序,因此您已在操作系统级别将您的应用程序注册为“该类型链接的打开器”。

您可能需要为类似myapp://password-reset-link或类似的东西定义一个自定义协议(因为您不希望所有 http 链接都用您的电子应用程序打开)。

我自己还没有这样做,但我认为这个链接看起来很有希望https://glebbahmutov.com/blog/electron-app-with-custom-protocol/


推荐阅读