【问题标题】:Meteor server-side redirection when new user is created创建新用户时流星服务器端重定向
【发布时间】:2015-04-11 01:29:30
【问题描述】:

我想在创建新用户帐户后重定向。

Accounts.onCreateUser(function(options, user) {
// what to do?
})

我正在使用iron:router,但Router.go() 不起作用,因为它仅适用于客户端。 Iron Router 据说支持服务器端重定向,但在这种情况下,我不确定如何应用它。

【问题讨论】:

  • Router.route('/login',function(){ Accounts.onCreateUser(function(options, user) { this.render('whateheverRoute') return user; }) }) 尝试将函数放入Router.route
  • 如果/login 不存在怎么办,因为它发生在导航栏中的模式中?
  • 但是你应该在某个模板里有那个导航栏,所以只要把 this.render 放在那里,这里的关键是你可以在任何钩子中使用 this.render 的上下文,功能铁路由器有
  • 抱歉,您能详细说明一下吗?我正在使用 Bootstrap 模式,因此路由器文件中的 Nav 模板实际上没有任何内容。这就是为什么我很困惑我应该将Accounts.onCreateUser 放在哪里,尤其是因为它是一个仅限服务器端的代码。

标签: meteor


【解决方案1】:

您可以在调用将调用 Accounts.createUser 的服务器方法的客户端代码中使用自己的方法。如果该方法成功,您可以执行重定向。例如

       //client method
        Meteor.call('createUser', userObj, function(err,data) {
          if (err) {
          //account creation failed
          } else {
          //success, redirect
          Router.go('routeName');
        }
        });


        //server code
        Meteor.methods({
          createUser: function(user) {
            //account creation
            Accounts.createUser(user);
          }
        });

【讨论】:

  • 我必须使用loginWithGoogle函数
  • 您的问题不是与创建帐户有关吗?我可以提供更多关于您打算如何工作的信息吗?
  • 当然 :) 当用户第一次访问该网站时,他会点击“用 google 登录”,并且会从服务器端调用 onCreateUserAccount,他应该被重定向到一个欢迎页面。如果他是回访用户,onCreateUserAccount 事件将不会被调用,也不应该被重定向。
  • 啊,我明白了。在那种情况下,您是否为路线使用了 onBeforeAction 挂钩?根据用户是否登录,它应该反应性地显示欢迎或 loginwithgoogle 部分。我假设 loginWithGoogle 函数之后登录用户应该自动呈现欢迎页面,而无需重定向。
猜你喜欢
  • 2015-02-24
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多