2012-07-24 26 views
14

Trong nhánh xác thực Meteor mới, tôi có thể tạo ra phía máy chủ người dùng như thế nào?Làm cách nào để tạo phía máy chủ người dùng trong Meteor?

tôi thấy làm thế nào để tạo ra chúng phía khách hàng với các cuộc gọi đến

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

Nhưng giả sử tôi muốn tạo ra một kỷ lục bộ sưu tập sử dụng Meteor khi khởi động?

Ví dụ: tài khoản quản trị viên trong khi khởi động/khởi động cho một ứng dụng?

Cảm ơn Steeve

+1

bạn nên cập nhật câu trả lời chấp nhận của bạn với một nói rằng sử dụng accounts.createuser – xaxxon

Trả lời

8

Có lẽ đó là một thực tế nổi tiếng bây giờ, nhưng vì lợi ích của hoàn này - có một API máy chủ mới để thực hiện điều này trên cành auth. Từ docs on auth:

"[Server] Meteor.createUser (tùy chọn, thêm) - Tạo user và gửi mà người dùng một email với một liên kết để lựa chọn mật khẩu ban đầu của họ và hoàn thành tuyển sinh tài khoản của họ

lựa chọn một băm chứa: Địa chỉ email (bắt buộc), tên người dùng (bắt buộc) thêm:. trường bổ sung cho đối tượng người sử dụng (ví dụ như tên, vv) "

Xin lưu ý các API có thể thay đổi vì nó không phải trên chi nhánh chính chưa.

+6

Meteor bây giờ hỗ trợ sử dụng 'CreateUser' trên máy chủ. Chi tiết tại đây: http://docs.meteor.com/#accounts_createuser – alanning

2

Tại thời điểm này, tôi tin rằng bạn không thể. Chạy

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

đến gần, nhưng việc thực hiện createUser trong passwords_server.js gọi this.setUserId trên thành công, và setUserId không thể được gọi trên máy chủ trừ khi chúng ta đang ở trong một phương pháp gọi trình client-khởi xướng (tìm kiếm cho "Không thể gọi setUserId trên máy chủ khởi xướng cuộc gọi phương thức" trong livedata_server.js.

này dường như giống như một cái gì đó giá trị hỗ trợ. có lẽ ba dòng cuối cùng của createUser, mà đăng nhập người sử dụng trong, nên được điều khiển bởi một boolean login tùy chọn mới để phương pháp này? Sau đó, bạn có thể sử dụng

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

trong mã khởi động máy chủ.

8

Hiện tại, điều này đã được đề xuất trong nhóm google thiên thạch.

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

Nó hoạt động. Tôi đã thử nghiệm nó trong khi khởi động/dây đeo khởi động.

Tôi sẽ không coi đây là câu trả lời lâu dài hoặc lâu dài vì tôi tin rằng nhánh auth vẫn đang ở mức độ thay đổi lớn và tôi tưởng tượng nhóm đằng sau Meteor sẽ cung cấp một số chức năng cho nó.

Vì vậy, không phụ thuộc vào điều này như là câu trả lời dài hạn.

Steeve

21

Trong các phiên bản mới hơn của việc sử dụng thiên thạch

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

    }); 

lưu ý: hash mật khẩu được tạo ra tự động

Mở phiên bản cũ sử dụng thiên thạch:

1 - NB: BẠN CÓ YÊU CẦU BAO GỒM LẮP ĐẶT?

  • mrt thêm tài khoản-base
  • mrt thêm tài khoản mật khẩu

Trên một số phiên bản của thiên thạch bạn không thể gọi điện muối mật khẩu SRP như Steeve đề nghị, vì vậy hãy thử này:

2 - làm Meteor.users.insert()

ví dụ

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

lưu ý: người dùng phải có DÙ một tên người dùng hoặc địa chỉ email. Tôi đã sử dụng email trong ví dụ này.

3 - Cuối cùng đặt mật khẩu cho tài khoản mới tạo.

 
     Accounts.setPassword(newUserId, 'newPassword'); 
    

+0

+1 Để đề cập đến tài khoản-mật khẩu. Tôi đã cố gắng sử dụng Accounts.createUser mà không có gói này, và nó sẽ không hoạt động! –

1

Tôi xác nhận rằng đoạn mã sau vào máy chủ/file seeds.js tôi làm việc với các phiên bản mới nhất của Meteor (Thả 0.8.1.1)

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

Directory (hoặc thư mục) của server có nghĩa là tôi đang chạy mã trên máy chủ. Tên tệp seeds.js hoàn toàn tùy ý.

official documentation hiện mô tả cả hành vi đối với Accounts.createUser() khi chạy trên máy khách và khi chạy trên máy chủ.

0

Làm việc dụ coffeescript cho Meteor phiên bản 1.1.0.2 (server side):

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

tôi vất vả trong một thời gian với API này nhận được 'Người dùng đã tồn tại' ngoại lệ trong mã làm việc trước khi thêm profiles.name đến options và ngoại lệ biến mất.

tham khảo: Accounts.createUser(options,[callback])

1

Tạo người dùng từ phía máy chủ

// 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) 
     } 
    }); 
Các vấn đề liên quan