【问题标题】:Links in Parse Server emails are broken (validate account, reset password...)Parse Server 电子邮件中的链接已损坏(验证帐户、重置密码...)
【发布时间】:2021-11-24 09:11:12
【问题描述】:

我尝试在本地服务器 (Ubuntu 20.04) 上安装 Parse 服务器。

所有功能都可以正常工作...除了一个:电子邮件系统(例如用于重置密码或验证电子邮件地址)。我安装了一个适配器并发送了电子邮件,但它们包含的链接已损坏:当我单击它时,我被重定向到“无效链接”页面。经过几个小时的调查,我不明白发生了什么。

这是我的配置文件:

  • 首先,我使用 Nginx 作为代理,这是我的域名配置文件中涉及我的 Parse 服务器的部分:


     location ~ ^/parse/(.*)$ {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://127.0.0.1:1337/parse/$1;
                proxy_ssl_session_reuse off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header Host $host;
            }
         location /parsedashboard {
                include proxy_params;
                proxy_pass http://0.0.0.0:4040;
            }
        
            location /login {
                include proxy_params;
                proxy_pass http://0.0.0.0:4040/login;
            }
        
            location /bundles {
                include proxy_params;
                proxy_pass http://0.0.0.0:4040/bundles;
            }
        
            location ~ ^/apps(.*)$ {
                include proxy_params;
                proxy_pass http://0.0.0.0:4040/apps$1;
            }

  • 这是我的 Parse config.js 文件:


    {
      "appName": "App name - Parse Server",
      "logsFolder": "/var/www/my/app/logs/",
      "databaseURI": "mongodb://localhost:27017/parsedb",
      "appId": "my_app_id",
      "masterKey": "my_master_key",
      "serverURL": "http://localhost:1337/parse",
      "publicServerURL": "https://my_domain.ovh/parse",
      "port": 1337,
      "cloud": "/var/www/my/app/cloud/main.js",
      "push": {
          "android": {
                "apiKey": "my_api_key"
          }
      },
      "liveQuery": {
        "classNames":["Class_1", "Class_2", "Class_3"]
      },
      "verifyUserEmails": true,
      "emailAdapter": {
        "module": "parse-server-mailgun-adapter-template",
        "options": {
          "fromAddress": "My app ",
          "domain": "my_domain.mailgun.org",
          "apiKey": "my-api-key"
        }
      }
     }

电子邮件中包含的链接看起来不错,例如:

https://my_domain.ovh/parse/apps/APP_ID/request_password_reset?token=TOKEN&username=juju

但正如我所说,它重定向到“无效链接”页面。

我试图通过在 parse-server/lib/Routers/PublicAPIRouter.js 中的 requestResetPassword(req) 方法中添加一些日志来了解为什么会发生这种重定向,我看到从查询中获得的用户名和令牌是空的:



     const {
          username,
          token: rawToken
        } = req.query;
        const token = rawToken && typeof rawToken !== 'string' ? rawToken.toString() : rawToken;
    
        if (!username || !token) {
                _logger.default.info("  - usn : " + (!username) + ", token : " + (!token));
          return this.invalidLink(req);
        }

我有日志:“-usn : true, token : true”

我不是 NodeJS 方面的专家(委婉说法 ^^),所以我真的不知道如何继续我的调查。

您知道这个问题的原因吗? (有关信息,我的 Parse 服务器的所有其他功能都可以正常工作:数据库访问、云代码、实时查询、仪表板......)

提前谢谢你:)

朱利安

【问题讨论】:

    标签: node.js parse-platform parse-server


    【解决方案1】:

    感谢 Parse 社区论坛的 davimacedo,我找到了解决方案 :)

    问题是nginx反向代理配置错误:请求参数没有转发到Parse服务器。

    详细信息可以在这个线程中找到: How can query string parameters be forwarded through a proxy_pass with nginx?

    对于我的配置,这意味着只需在“proxy_pass”行的末尾添加 $is_args$args。完整的行是:

    proxy_pass http://127.0.0.1:1337/parse/$1$is_args$args;
    

    在此之后,一切都按预期工作 \o/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 2011-03-06
      • 2020-06-06
      • 2014-08-17
      • 1970-01-01
      • 2016-04-01
      • 2023-04-01
      相关资源
      最近更新 更多