2016-08-12 33 views
0

当用户创建他们给出了两个用户选择之间选择一个配置文件,这意味着他们的用户配置文件对象看起来像:路由用户基于配置文件参数登录后

{ 
    name: "Jane Doe", 
    userType: "user-A" 
} 

我想什么要做的是设置一个重定向,其中,一旦用户登录,它将检查他们是什么类型的用户并将他们重定向到一个页面。

如果USERTYPE =用户A,他们会去为localhost:3000 /用户-A
如果USERTYPE =用户B,他们会去为localhost:3000 /用户-B

我目前使用铁路由器为我的路线和账户,密码账户

我试图在客户端以下,但它打印出空

Template.login.events({ 
    'submit #at-pwd-form': function() { 
     console.log(Meteor.userId()); 
    } 
}); 

编辑1

试图从下面的代码,以及在服务器端做到这一点,但我正在逐渐铁路由器错误:

Accounts.onLogin(function() { 
    var pathToProfile = "/" + Meteor.user().profile.userType; 
    console.log(pathToProfile); // Proof that variable is being saved properly 
    Router.go(pathToProfile); 
}); 

错误:

I20160811-22:58:28.560(-4)? Exception in onLogin callback: TypeError: Object function router(req, res, next) { 
I20160811-22:58:28.560(-4)?  //XXX this assumes no other routers on the parent stack which we should probably fix 
I20160811-22:58:28.560(-4)?  router.dispatch(req.url, { 
I20160811-22:58:28.560(-4)?  request: req, 
I20160811-22:58:28.561(-4)?  response: res 
I20160811-22:58:28.561(-4)?  }, next); 
I20160811-22:58:28.561(-4)? } has no method 'go' 
I20160811-22:58:28.561(-4)?  at server/main.js:13:10 
I20160811-22:58:28.561(-4)?  at runAndHandleExceptions (packages/callback-hook/hook.js:133:1) 
I20160811-22:58:28.561(-4)?  at packages/callback-hook/hook.js:140:1 
I20160811-22:58:28.562(-4)?  at packages/accounts-base/accounts_server.js:167:5 
I20160811-22:58:28.562(-4)?  at [object Object]._.extend.each (packages/callback-hook/hook.js:109:1) 
I20160811-22:58:28.562(-4)?  at AccountsServer.Ap._successfulLogin (packages/accounts-base/accounts_server.js:166:21) 
I20160811-22:58:28.562(-4)?  at AccountsServer.Ap._attemptLogin (packages/accounts-base/accounts_server.js:355:10) 
I20160811-22:58:28.562(-4)?  at [object Object].methods.login (packages/accounts-base/accounts_server.js:532:21) 
I20160811-22:58:28.562(-4)?  at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1704:12) 
I20160811-22:58:28.563(-4)?  at packages/ddp-server/livedata_server.js:711:19 
+0

我不熟悉你使用的框架,但在客户端,你可以设置'locatio n“对象,而在服务器端,您可以发送带有302 HTTP响应(临时重定向)的Location标头 – rvighne

+0

如果您得到空值,则表示没有用户登录。[Meter.userId()]( https://docs.meteor.com/api/accounts.html#Meteor-userId) – Zesky

+0

@泽斯基权利,多数民众赞成我想弄清楚。我想要做的是,一旦用户登录,找出他们的用户类型并将其重定向到特定页面。 –

回答

1

您可以AccountsTemplates.configure()

使用 onSubmitHook
//code goes to lib folder, shared code between client & server 
onSubmitHook: function onSubmitHook(error, state) { 
    if (!error) { 
     if (state === 'signIn') { 
      var user = Meteor.user(); 
      if (user.userType == "user-A") { 
       Router.go('/user-A'); 
      } else { 
       Router.go('/user-B'); 
      } 
     } 
    } 
}