【问题标题】:Meteor share sessions data between client and serverMeteor 在客户端和服务器之间共享会话数据
【发布时间】:2016-05-03 18:04:05
【问题描述】:

我正在建立一个受限注册。我希望具有在 url 中传递的特定代码的用户能够注册而不是其他人。我正在使用accounts 包。

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

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

有什么想法吗?

【问题讨论】:

    标签: cookies meteor session-variables meteor-accounts


    【解决方案1】:

    对我来说,最好的选择是将自定义参数传递给登录按钮。

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

    它概述了以下内容:

        accountsUIBootstrap3.setCustomSignupOptions = function() {
            return {
                mxpDistinctId: Session.get('mxpdid'),
                leadSource: Session.get('leadSource')
            }
        };
    

    【讨论】:

      【解决方案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 变量中找到你的令牌,所以它应该是 options.profile.token。

      【讨论】:

        猜你喜欢
        • 2015-08-07
        • 2020-05-16
        • 2018-04-16
        • 2021-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多