Można użyć Deps.autorun do instalacji niestandardowej obsługi obserwacji Meteor.userId() reaktywnych zmian zmiennych.
Meteor.userId() (i Meteor.user()) są zmiennymi reaktywnymi zwracającymi odpowiednio aktualnie zalogowany identyfikator userId (null jeśli żaden) oraz odpowiedni dokument użytkownika (rekord) w zbiorze Meteor.users.
W konsekwencji można śledzić podpisywanie/wyprowadzanie aplikacji Meteor przez reakcję na modyfikację tych reaktywnych źródeł danych.
klienta/main.js:
var lastUser=null;
Meteor.startup(function(){
Deps.autorun(function(){
var userId=Meteor.userId();
if(userId){
console.log(userId+" connected");
// do something with Meteor.user()
}
else if(lastUser){
console.log(lastUser._id+" disconnected");
// can't use Meteor.user() anymore
// do something with lastUser (read-only !)
Meteor.call("userDisconnected",lastUser._id);
}
lastUser=Meteor.user();
});
});
W tym próbki kodu, mam utworzenie pliku źródłowego zmiennej lokalnej (lastUser) śledzić ostatniego użytkownika, który był zalogowany w aplikacji. Następnie w Meteor.startup używam Deps.autorun do ustawienia kontekstu reaktywnego (kod, który zostanie ponownie wykonany, gdy nastąpi modyfikacja jednego z reaktywnych źródeł danych). Ten reaktywny kontekst śledzi odmianę Meteor.userId() i odpowiednio reaguje.
W kodzie dekonfiguracji nie można używać Meteor.user(), ale jeśli chcesz uzyskać dostęp do dokumentu ostatniego użytkownika, możesz użyć ostatniej zmiennejUser. Możesz wywołać metodę serwera z argumentem lastUser._id jako, jeśli chcesz zmodyfikować dokument po wylogowaniu.
server/server.js
Meteor.methods({
userDisconnected:function(userId){
check(userId,String);
var user=Meteor.users.findOne(userId);
// do something with user (read-write)
}
});
Należy pamiętać jednak, że złośliwi klienci mogą wywołać tę metodę serwera z nikim userid, więc nie powinno się nic krytycznego, chyba że konfiguracja niektórych kod weryfikacyjny zrobić.
Może to odpowiedzieć na pytanie: http://stackoverflow.com/questions/10257958/server-cleanup-after-a-client-disconnects –
To bardzo blisko, ale robię chcesz się upewnić, że to tylko wtedy, gdy aktywnie się wylogują niestety. –
może to pomóc: http://stackoverflow.com/questions/22900405/how-to-redirect-after-user-has-just-logged-in-lub-just-logged-out?answertab=votes#tab-top – dm76