2015-06-04 71 views
7

Tôi đang xây dựng một ứng dụng bằng Meteor. Tôi muốn tạo một ID giỏ hàng mới (hoạt động như một giỏ hàng nơi tôi có thể lưu trữ các mục) mỗi khi người dùng đăng nhập vào ứng dụng của tôi. Tuy nhiên, mỗi khi tôi mở một trang mới trong ứng dụng, một ID giỏ hàng mới được tạo. Điều này có nghĩa là ứng dụng "đăng nhập" mỗi lần tôi nhấp vào một trang mới trong ứng dụng? Đây là mã của tôi:Tài khoản trên móc Đăng nhập Vòng lặp thiên thạch

Accounts.onLogin(function(user){ 
      var newCartId = uuid.new() 
      Meteor.users.update({_id: user.user._id}, {$set: {'profile.cartId': newCartId}}) 
      console.log('just created a new Cart ID at ' + Date()); 
    }); 

Trả lời

10

Vâng, điều này đúng.

Mỗi khi bạn mở trang mới bạn chưa đăng nhập. Khi mã thông báo localStorage xác thực bạn, tương tự như cách cookie hoạt động, bạn sẽ tự động đăng nhập. Cái móc này cũng sẽ chạy khi bạn đăng nhập tự động.

Khó khăn để xác định cách người dùng đăng nhập. Hook onLogin của Meteor kích hoạt trên bất kỳ phương thức đăng nhập nào.

Bạn có thể tùy chỉnh khi bạn muốn móc của bạn để chạy, mặc dù:

Accounts.onLogin(function(info) { 

    if(info.methodName == "createUser") { 

     console.log("This user logged in by signing up"); 


    }else if(info.type == "password") { 

     console.log("This user logged in by using his/her password"); 


    }else if(info.type == "resume") { 

     console.log("This user logged in using a localStorage token"); 
    } 
}); 

Vì vậy, ở đây bạn có thể làm cho ngọn lửa sự kiện chỉ khi người dùng đăng nhập bằng mật khẩu của mình. Hoặc ngay cả khi họ đăng ký. Bạn có thể sử dụng điều này để loại trừ việc chạy móc của bạn nếu người dùng mở một trang mới, sử dụng mã thông báo localStorage để đăng ký.

+0

cập nhật: 'info' trả về' undefined' –

+0

@DariuszSikorski Điều này có thể xảy ra nếu bạn đăng nhập theo cách hơi khác thường. Nó có thể là giá trị nộp một vé github trên theo dõi vấn đề của Meteor: github.com/meteor/meteor với một số mã tái sản xuất. – Akshat

+0

Đúng vậy, tôi đã sử dụng 'accounts-facebook' để kiểm tra mã này. –

Các vấn đề liên quan