2014-10-02 2 views
5

Sto tentando di reindirizzare l'utente a una pagina dopo l'accesso. Cercando di utilizzare Router.go da Accounts.onLogin callback:Accounts.onAccedi con IronRouter

Accounts.onLogin() -> 
    Router.go('users.new') 

Quando provo questo sul server ottengo TypeError: Object [object Object] has no method 'go'

Sul client vengo Accounts.onLogin undefined

risposta

1

Beh, hai un problema qui:

Accounts.onLogin non è definito sul client perché è un'API solo server.

UPDATE 15/06/2015: questo non è più vero, Accounts.onLogin è ora disponibile anche sul client.

Router.go non è definito sul server perché reindirizza con iron: router è un'API client-only.

Se si utilizza {{> loginButtons}} si può provare questa soluzione sul client:

Tracker.autorun(function(){ 
    if(Meteor.user()){ 
    // login handler 
    Router.go("users.new"); 
    } 
    else{ 
    // logout handler 
    } 
}); 

Se si utilizza un modulo di login personalizzato con Meteor.loginWithSomething, è possibile eseguire il reindirizzamento nel callback successo del metodo di login.

+0

Ha funzionato con Deps.autorun. Non sei sicuro di cosa sia Tracker.autorun. Forse perché sono su Meteor 0.8 è un'API leggermente diversa. – mfilimonov

+0

Sì, questo è stato rinviato compatibilmente con il nome in 0.9.1 – saimeunt

+0

Account.onlogin non è un server solo cosa - è una cosa ovunque - ha qualcosa che è stato cambiato da questa risposta? – Diskdrive