1

我正在尝试使用帐户密码包进行电子邮件验证,但是我遇到了一个奇怪的问题。

似乎电子邮件验证 URL 中的 # 引起了问题。验证电子邮件 URL 通常如下所示:http://localhost:3000/#/verify-email/cnaTqQSCgYAksIsFo5FgmV94NHwrfaM2g5GvdZDUMlN

当我点击它时,似乎什么也没发生;它只是重定向到 localhost:3000/#

但是,当我删除 # (http://localhost:3000/verify-email/cnaTqQSCgYAksIsFo5FgmV94NHwrfaM2g5GvdZDUMlN)时,这似乎工作得很好。

URL ( http://localhost:3000/#/verify-email/cnaTqQSCgYAksIsFo5FgmV94NHwrfaM2g5GvdZDUMlN ) 来自 Meteor,所以它不是我创建的。

这是我的路线和控制器(使用铁路由器)

Router.route('/verify-email/:_token', {
    controller : 'AccountController',
    action : 'verifyEmail'
});

AccountController = RouteController.extend({
    fastRender: true,
    data: function () {},
    onBeforeAction: function () {
        this.render('Loading');
        this.next();
    },

    verifyEmail: function() {
        var verificationToken = this.params._token;
        console.log(verificationToken);
        Accounts.verifyEmail(verificationToken,  function(error) {
           if (error) {
               console.log(error);
           } else {
               Router.go('/');
           }
        });

    }
});

任何帮助表示赞赏。

4

1 回答 1

4

冲突可能与accounts-password 包和iron:router 相关联,如下所述:

...添加一个服务器文件,用 Meteor 创建的 # 路径覆盖 url,以便 Iron-Router 可以工作

(function () {
    "use strict";

    Accounts.urls.resetPassword = function (token) {
        return Meteor.absoluteUrl('reset-password/' + token);
    };

    Accounts.urls.verifyEmail = function (token) {
        return Meteor.absoluteUrl('verify-email/' + token);
    };

    Accounts.urls.enrollAccount = function (token) {
        return Meteor.absoluteUrl('enroll-account/' + token);
    };

})();

希望它能引导您朝着正确的方向前进。

于 2015-02-24T04:30:17.647 回答