Meteor在客户端和服务器之间共享会话数据

时间:2016-01-26 23:56:51

标签: cookies meteor session-variables meteor-accounts

我正在建立限制注册。我希望用户在网址中传递特定代码,以便能够注册,而不是其他人。我正在使用accounts包。

我可以在Accounts.onCreateUser方法中阻止创建帐户。我正在寻找一种方法来告诉服务器客户端是否有授权的注册码。使用经典表单(电子邮件+密码),我可以添加一个额外的隐藏字段。如果用户注册Facebook,我怎么能达到相同的结果?

由于Meteor不使用cookie,我无法将此信息存储在服务器可以访问的cookie中。 Session变量不可访问服务器端。由于我无法控制使用account-facebook创建发送的内容,因此当用户按下注册时,我无法在客户端使用Session变量。

任何想法“?

2 个答案:

答案 0 :(得分:2)

只需将特殊标记添加到传递给Accounts.createUser()的用户对象:

var user = {
    email: email,
    password: password,
    profile: {
        token: token
    }
};
Accounts.createUser(user, function (error, result) {
    if (error) {
        console.log(error)
    }
});

在服务器端,您可以在Accounts.onCreateUser()

中访问此内容
Accounts.onCreateUser(function(options, user) {
    console.log(options);
    console.log(user);
});

认为它会在你找到你的令牌的选项变量中,所以它会是options.profile.token

答案 1 :(得分:0)

对我来说,这里最好的选择是将自定义参数传递给loginbuttons。

查看包文档: https://github.com/ianmartorell/meteor-accounts-ui-bootstrap-3

概述如下:

t.decimal :latitude, precision: 9, scale: 7
t.decimal :longitude, precision: 10, scale: 7