Trước hết, bạn biết bạn cần phải thực hiện dữ liệu của bạn 'unhackable', có một cái nhìn tại các chức năng xuất bản: http://docs.meteor.com/#meteor_publish
Vì vậy, trong chức năng Meteor.publish của bạn cho sản phẩm của bạn, bạn nên làm một cái gì đó như :
Điều này đảm bảo khách hàng chỉ có thể xem sản phẩm nếu họ đăng nhập & có tài khoản được xác minh. Họ vẫn có thể đăng nhập nhưng không thể xem các sản phẩm cho đến khi tài khoản của họ được xác minh.
máy chủ js
Meteor.publish("productinfo", function() {
user = Meteor.users.findOne({_id:this.userId})
if(user) {
if(user.emails[0].verified) {
//You can put some extra logic in here to check which product the user has, if you're selling or something like that
return Products.find({});
}
}
});
Hãy nhớ bạn cần phải loại bỏ autopublish
mà sao băng sử dụng để làm cho cuộc sống một chút dễ dàng hơn, nó về cơ bản công bố tất cả các bộ sưu tập xuống cho người dùng, nhưng bạn muốn hạn chế nhất định nên bạn nên xóa nó
Thứ hai bạn cần xử lý dữ liệu trên mẫu của mình để nếu người dùng không đăng nhập nội dung mẫu không hiển thị. Vì vậy, ngay cả trong bước mà khi trình duyệt ban đầu được nạp họ sẽ không thấy các sản phẩm
Khách hàng JS
Meteor.subscribe("productinfo");
Template.products.products = function() {
if(Meteor.userId()) {
if(Meteor.user().emails[0].verified) {
return Product.findOne({_id:"your product id"});
}
}
}
Bằng cách này, kiểm tra mẫu helper nếu người dùng đang đăng nhập & họ có một xác nhận tài khoản. Ngoài ra nếu mã đã được thay đổi ở phía máy khách, họ sẽ không thấy sản phẩm vì chức năng xuất bản.
Awesome, thanks a lot! –