2014-10-02 3 views
5

Я пытаюсь перенаправить пользователя на страницу после входа в систему. Попытка использовать Router.go из Accounts.onLogin обратного вызова:Accounts.onLogin с IronRouter

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

Когда я попробовать это на сервере я получаю TypeError: Object [object Object] has no method 'go'

На клиенте я получаю Accounts.onLogin undefined

ответ

1

Ну, вы получили проблема здесь:

Accounts.onLogin не определено на клиенте, потому что это API-интерфейс только для сервера.

UPDATE 15/06/2015: больше не верна, Accounts.onLogin теперь доступен на заказчику.

Router.go не определено на сервере, поскольку перенаправление с железом: маршрутизатор - это клиентский API.

Если вы используете {{> loginButtons}} вы можете попробовать это временное решение на клиенте:

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

Если вы используете пользовательские формы входа с Meteor.loginWithSomething, вы можете выполнять переадресацию в успех обратного вызова метода входа.

+0

Работает с Deps.autorun. Не уверен, что такое Tracker.autorun. Может быть, причина в том, что я на метеоре 0.8, это немного другой API. – mfilimonov

+0

Да, это было обратно совместимо переименовано в 0.9.1 – saimeunt

+0

Account.onlogin - это не единственная вещь на сервере - это повсюду - есть ли что-то, что было изменено после этого ответа? – Diskdrive

Смежные вопросы