javascript - 账号onLogin hook meteor 循环

标签 javascript authentication meteor hook account

我正在使用 Meteor 构建应用程序。每次用户登录我的应用程序时,我都想创建一个新的购物车 ID(作为我可以存储元素的购物车)。但是,每次我在应用程序中打开一个新页面时,都会创建一个新的购物车 ID。这是否意味着每次我单击应用程序中的新页面时应用程序都会“登录”?这是我的代码:

    Accounts.onLogin(function(user){
            var newCartId = uuid.new()
            Meteor.users.update({_id: user.user._id}, {$set: {'profile.cartId': newCartId}})
            console.log('just created a new Cart ID at ' + Date());
    });

最佳答案

是的,这是真的。

每次您打开一个新页面时,您都没有登录。当 localStorage token 对您进行身份验证时,类似于 cookie 的方式,您将自动登录。当您自动登录时,此 Hook 也会运行。

很难定义用户如何登录。Meteor 的 onLogin 钩子(Hook)会在任何类型的登录方法上触发。

不过,您可以自定义何时希望 Hook 运行:

Accounts.onLogin(function(info) {

    if(info.methodName == "createUser") {

        console.log("This user logged in by signing up");


    }else if(info.type == "password") {

        console.log("This user logged in by using his/her password");


    }else if(info.type == "resume") {

        console.log("This user logged in using a localStorage token");
    }
});

所以在这里您可以让事件仅在用户使用他或她的密码登录时触发。甚至在他们注册时。如果用户打开一个使用 localStorage token 注册的新页面,您可以使用它来排除运行 Hook 。

关于javascript - 账号onLogin hook meteor 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30644730/

相关文章:

php - 在 HTTP 和 HTTPS 之间传递 session 变量

c# - 通过基本身份验证使用多个凭据调用 Web 服务

javascript - 如何从 Meteor 包导出到我的应用程序的命名空间?

javascript - 将 javascript 数组传递到另一个页面

javascript - 选择选项中的 Angular 组逗号分隔值

javascript - 滚动到底部不适用于 IE 或 FF,仅适用于 Chrome

javascript - Meteor Method 中的 .forEach 无法返回

javascript - 无法修改 div 的 innerHTML

java - 如何使用 opensaml 验证 (azure) saml xml 响应?

javascript - 从 Google Map API 获取 'Most Helpful' 而不是 'Latest' 评论