Trong việc quản lý các thực thể trong Parse, có rất nhiều đối tượng mà tôi cần phải liên kết với người dùng đã đăng nhập hiện tại.An ninh đối tượng trong phân tích cú pháp bằng cách sử dụng API JavaScript - Gắn kết người dùng với các đối tượng được lưu
mối quan tâm của tôi là:
- Không có mã phụ trợ đảm bảo rằng
User
được thông qua tại là hiện tại người dùng đăng nhập. - Người dùng có thể chỉ định bất kỳ đối tượng mới được tạo nào cho người dùng khác.
Họ có this example TODO app mà trong the documentation cho thấy không có đám mây Mã tại chỗ để đảm bảo rằng các User
rằng Todo
được gán cho là hiện đang đăng nhập người dùng.
Bây giờ tôi xem qua the code Tôi bắt đầu nghĩ rằng bất cứ khi nào một đối tượng được lưu, nó sẽ được liên kết với người dùng. Bất cứ ai có thể giải thích lý do tại sao ứng dụng này hoạt động và cách nó kết hợp các số Todo
với số User
?
CẬP NHẬT: Không bao giờ, tôi tìm thấy vị trí trong mã của họ nơi họ chỉ định người dùng lưu cho Todo. Câu hỏi của tôi là, điều gì ngăn người dùng viết mã để lưu việc cần làm với id người dùng của người khác?
this.todos.create({
content: this.input.val(),
order: this.todos.nextOrder(),
done: false,
user: Parse.User.current(),
ACL: new Parse.ACL(Parse.User.current())
});
CẬP NHẬT # 2: Nếu đối tượng User
có một bộ ACL
để chỉ cho phép người dùng có thể đọc User
đối tượng mà họ sở hữu, sau đó họ sẽ không thể truy vấn để có được một đối tượng người sử dụng bỏ qua. Tuy nhiên, có hai vấn đề khác có thể:
- Có thể cho họ để vượt qua ObjectId của người sử dụng thay vì toàn bộ đối tượng
User
ngay cả khiuser
lĩnh vực trên bànTodo
s đòi hỏi một_User
? - Tôi tin rằng họ cũng có thể tạo đối tượng người dùng mới và chỉ định đối tượng đó ... Tôi đang cố nghĩ về một tình huống mà đây sẽ là vấn đề, nhưng hiện tại tôi không thể.
Nếu bất kỳ ai cũng có thể xác nhận hoặc cung cấp giải pháp cho một trong những người hữu ích. Hãy cố gắng thử nghiệm # 1 ngay bây giờ.
CẬP NHẬT # 3 - Sau một số thử nghiệm:
- Nếu
user
lĩnh vực trên bànTodo
s đòi hỏi một đối tượng_User
, nó sẽ không lấy ObjectId như là một chuỗi. Tuy nhiên, chúng có thể tạo đối tượng người dùng mới và đặt đối tượngId ở đó để giải quyết vấn đề này.
var user = new Parse.User(); // Create user object user.id = "cqmEuj1Bzf"; // Assign user id // Create and save Todo var td = new Todo(); td.set("name", "Some ting todo"); td.set("user", user); td.save();
này đúng ở đây là chính xác những gì tôi đã lo lắng về. Tôi đã lưu thành công một tài khoản Todo vào tài khoản của người dùng khác - miễn là tôi biết user_id của họ (objectId
).Với đủ người dùng, họ có khả năng đoán được ít nhất một người dùng để xoay tài khoản của một người ngẫu nhiên.
Vậy bây giờ là gì?
Trả lời: Sử dụng mã đám mây để xác minh rằng người dùng đã chuyển vào khớp với người dùng hiện tại. Câu trả lời đã được đăng trên Parse's forums here.
Hey Tôi chia find của bạn vào câu trả lời riêng của mình để làm cho nó dễ dàng hơn để tìm SO phong cách. – Diogenes