2013-04-14 17 views
16

Chcę wyłączyć rejestrację z mojej aplikacji Meteor. Używam kont - ui smartpackage.Wyłącz rejestrację meteorologiczną

Próbowałem to:

Accounts.config({ 
    var forbidClientAccountCreation = true; 
}) 

ale moje awarii serwera aplikacji. Jak mogę to naprawić?

Jest to jeden uniwersalny plik JS, a nie jeden dla klienta i jeden dla serwera.

Odpowiedz

41

Accounts.config przyjmuje jeden parametr, który jest javascript hashmap. Powinieneś napisać poprawnie:

Accounts.config({ 
    forbidClientAccountCreation : true 
}); 
+1

Również na temat bezpieczeństwa tego. Nie mogę po prostu edytować pliku JS i założyć konto? –

+0

Masz na myśli klienta? – mquandalle

+0

Tak, nie chcę, żeby ludzie je edytowali, a następnie magicznie rejestrowali: \ –

1

Wystarczy wpisać obok na konsoli:

Accounts._loginButtonsSession.set('inSignupFlow', true); 

a zobaczysz ponownie formularz rejestracyjny.

Co zrobiłem było zapobiec walidację tworzenia użytkownika na serwerze, co następuje:

Accounts.validateNewUser(function (user) { 
    return false 
}); 
18

Właśnie wpadłem na to i tu odpowiedzi nie są całkowicie jasne. Zaakceptowana odpowiedź działa dla OP, ponieważ używa pojedynczego pliku JS, ale jeśli nie, umieść następujący kod w pliku poza folderami client i server.

Accounts.config({ 
    forbidClientAccountCreation : true 
}); 

Powodem jest to, że działa to na kliencie wywoła accounts-ui funkcję ukrywania „Sign up” linki i tekst, i uruchomienie go na serwerze będzie rzeczywiście zakazać nowych kont użytkowników z tworzone.

Jeśli uruchomisz go tylko na kliencie, linki i tekst zostaną ukryte, ale nadal możesz utworzyć konto za pomocą konsoli przeglądarki.

Jeśli uruchomisz go tylko na serwerze, tworzenie konta zawsze zakończy się niepowodzeniem, ale nadal będziesz otrzymywać powiązane linki i tekst.

Dobre miejsce na kod znajduje się w folderze lib, ponieważ wszystko w tym folderze zostanie przetworzone przez Meteor zarówno na serwerze i kliencie, jak i przed każdym innym folderem. Na przykład możesz umieścić go w lib/environment.js.

+0

Umieszczam kod w folderze/config, ale otrzymuję komunikat "Błąd: Nie mogę ustawić" forbidClientAccountCreation "więcej niż jeden raz ' – Gobliins

+1

Jeśli używasz 'useraccounts', musisz wywołać własną metodę, ponieważ one już dzwonią 'Accounts.config' wewnętrznie, zobacz https://github.com/meteor-useraccounts/core/issues/25 – ianmartorell

+0

Używam tego w porządku, ale teraz mam ten problem:' Błąd: signUp skonfigurowana trasa, ale forbidClientAccountCreation ustawiona na true!"w jaki sposób mogę uniemożliwić skonfigurowanie tej trasy i ustawić tę trasę tylko wtedy, gdy clientaccountcreation ma wartość false? – Gobliins