2012-07-24 15 views
14

W nowym oddziale uwierzytelniania Meteor, w jaki sposób mogę utworzyć strony po stronie serwera?Jak mogę utworzyć stronę serwera po stronie Meteor?

widzę jak je tworzyć po stronie klienta z wezwaniem do

[Client] Meteor.createUser(options, extra, callback) 

Ale przypuśćmy, że chcemy utworzyć rekord zbiórki użytkownik Meteor na starcie?

Na przykład konto administratora podczas uruchamiania/ładowania dla aplikacji?

Dzięki Steeve

+1

należy zaktualizować zaakceptowane odpowiedź na jedno, które mówi do korzystania accounts.createuser – xaxxon

Odpowiedz

8

Prawdopodobnie jest to dobrze znany fakt, teraz, ale przez wzgląd na ukończenie tego - nowe API dla serwera robi to na auth gałęzi. Z docs on auth:

"[Serwer] Meteor.createUser (opcji dodatkowych) - Tworzy użytkownika i że użytkownik wysyła wiadomość e-mail z linkiem do wyboru swoje hasło początkowe i zakończyć ich konto rekrutacja

opcje hash zawierające: E-mail (obowiązkowe), nazwę użytkownika (opcjonalnie) extra. dodatkowe pola dla obiektu użytkownika (na przykład nazwisko, etc) "

Uwaga API mogą ulec zmianie, ponieważ nie jest on Oddział główny jeszcze.

+6

Meteor teraz obsługuje używając „createuser” na serwerze. Szczegółowe informacje tutaj: http://docs.meteor.com/#accounts_createuser – alanning

2

w tej chwili uważam, że nie możesz. Uruchamianie

Meteor.call('createUser', {username: "foo", password: "bar"}); 

zbliża, ale realizacja createUser w passwords_server.js wzywa this.setUserId na sukces, a setUserId nie można nazwać na serwerze, chyba że jesteśmy w wywołania metody zainicjowane przez klienta (Search for „Nie można wywołać setUserId na serwerze inicjowane wywołanie metody”w livedata_server.js.

To wydaje się jak coś warto wspierać. być może ostatnie trzy linie createUser, które zalogować użytkownika w, powinna być kontrolowana przez nową logiczną login opcji do metody? Wtedy możesz użyć

Meteor.call('createUser', {username: "foo", password: "bar", login: false}); 

w kodzie bootstrap serwera.

8

Na razie zasugerowano to w grupie googlów meteorytów.

Meteor.users.insert({username: 'foo', emails: ['[email protected]'], name: 'baz', services:  {password: {srp: Meteor._srp.generateVerifier('password')}}}); 

Działa. Przetestowałem go podczas uruchamiania/ładowania paska.

Nie uznałbym tego za odpowiedź na stałe lub długoterminowe, ponieważ uważam, że gałąź auth wciąż jest w ogromnym stopniu zmieniona i wyobrażam sobie, że zespół stojący za Meteorem zapewni mu jakąś funkcjonalność.

Więc nie polegaj na tym jako na długoterminowej odpowiedzi.

Steeve

21

W nowszych wersjach użytku meteorów

Accounts.createUser({ 
          username: username, 
          email : email, 
          password : password, 
          profile : { 
           //publicly visible fields like firstname goes here 
          } 

    }); 

notatek: hash hasła jest generowany automatycznie

W starszych wersjach użytku Meteor:

1 - NB: CZY MASZ ZAINSTALOWANE PAKIETY PACKAGES?

  • mrt dodać konta baza
  • mrt dodać rachunki-password

W niektórych wersjach meteor nie można nazwać SRP generator soli hasło jako sugerowane Steeve, więc spróbuj tego:

2 - do Meteor.users.insert()

np.

var newUserId = 
Meteor.users.insert({ 
     emails: ['[email protected]'], 
     profile : { fullname : 'peter' } 
}); 

uwaga: użytkownik musi mieć albo nazwę użytkownika lub adres e-mail. Użyłem e-maila w tym przykładzie.

3 - Na koniec ustaw hasło dla nowo utworzonego konta.

 
     Accounts.setPassword(newUserId, 'newPassword'); 
    

+0

+1 Wymienienie kont-hasło. Próbowałem użyć Accounts.createUser bez tego pakietu, a to by nie działało! –

1

Ustaliliśmy, że następujący kod w moim serwerze pliku/seeds.js współpracuje z najnowszą wersją Meteor (Release 0.8.1.1)

if (Meteor.users.find().count() === 0) { 
    seedUserId = Accounts.createUser({ 
    email: '[email protected]', 
    password: '123456' 
    }); 
} 

Directory (lub folder) z server oznacza, że ​​uruchamiam kod na serwerze. Nazwa pliku seeds.js jest całkowicie dowolna.

Teraz official documentation opisuje teraz zarówno zachowanie dla Accounts.createUser() po uruchomieniu na kliencie, jak i po uruchomieniu na serwerze.

0

Praca coffeescript przykład dla Meteor wersji 1.1.0.2 (po stronie serwera):

userId = Accounts.createUser 
    username: 'user' 
    email: '[email protected]' 
    password: 'password' 
    profile: 
     name: 'user name' 
user = Meteor.users.findOne userId 

zmagałem się przez jakiś czas z tym API coraz „użytkownik już istnieje” wyjątek w kodzie pracy przed dodaniem do profiles.name options i zniknął wyjątek.

referencyjny: Accounts.createUser(options,[callback])

1

Tworzenie użytkownika od strony serwera

// Server method 
    Meteor.methods({ 
     register: function(data) { 
     try { 
     console.log("Register User"); 
     console.log(data); 
     user = Accounts.createUser({ 
      username: data.email, 
      email: data.email, 
      password: data.password, 
      profile: { 
      name: data.email, 
      createdOn: new Date(), 
      IsInternal: 0 
      } 
     }); 
     return { 
      "userId": user 
     }; 
     } catch (e) { 
     // IF ALREADY EXSIST THROW EXPECTION 403 
     throw e; 
     } 
    } 
    }); 
    // Client call method 
    Meteor.call('register',{email: "[email protected]",password: "123456"}, function(error, result){ 
     if(result){ 
     console.log(result) 
     } 
     if(error){ 
     console.log(result) 
     } 
    }); 
Powiązane problemy