2013-05-02 27 views
5

Trong trò chơi của tôi, người dùng có thể gây thiệt hại cho người dùng khác và lấy một số vàng của họ. Biến vàng được lưu trữ trong đối tượng người dùng PFUser khác. Làm thế nào một người dùng có thể thay đổi giá trị cho vàng được lưu trữ trong đối tượng người dùng khác của PFUser?Thay đổi dữ liệu trong đối tượng PFuser khác

+0

Bạn đã tìm thấy câu trả lời cho câu hỏi của bạn? – FreeAsInBeer

+0

Không chính xác tôi chỉ tránh tình huống, bằng cách loại bỏ tất cả các đối tượng có thể cần phải được tương tác với người chơi khác bên ngoài lớp PFUser. – Phil

+0

Đó là những gì tôi đã tìm ra, và đó là con đường tôi phải thực hiện. Tôi đoán nó là dễ hiểu, nhưng khó chịu không kém. – FreeAsInBeer

Trả lời

0

Bạn có thể sử dụng getUserObjectWithId, từ PFQuery.

+0

Tôi biết cách lấy một đối tượng PFuser, nhưng tôi không biết làm thế nào (hoặc nếu có thể) để thay đổi dữ liệu của một đối tượng PFUser từ một đối tượng khác mà không có quyền truy cập đặc biệt nào, nhưng tôi không biết đã xong. – Phil

+0

Bạn đã thử cách thông thường để tham khảo nó tức là userObj ["gold"]? –

10

Bạn không thể lưu hoặc xóa các PFUs không được xác thực. Cách để thực hiện chức năng đó là để thiết lập một lớp học riêng cho các biến sử dụng công cộng đọc/ghi

Từ các tài liệu phân tích cú pháp -

bảo mật Đối với tài Objects

Lớp PFUser được bảo đảm bằng mặc định . Dữ liệu được lưu trữ trong một PFUser chỉ có thể sửa đổi bởi người dùng đó. Theo mặc định, dữ liệu vẫn có thể đọc được bởi bất kỳ khách hàng nào. Do đó, một số đối tượng PFUser được xác thực và có thể được sửa đổi , trong khi các đối tượng khác chỉ đọc.

Cụ thể, bạn không thể gọi bất kỳ phương pháp lưu hoặc xóa trừ khi PFUser được lấy bằng phương pháp đã xác thực, như đăng nhập hoặc đăng ký. Điều này đảm bảo rằng chỉ người dùng mới có thể thay đổi dữ liệu riêng của họ.

+2

Đây là câu trả lời đúng. Bạn thậm chí không thể thay đổi các thuộc tính của người dùng, bởi vì nó sẽ không lưu các thay đổi. – OlivaresF

4

Giải pháp tốt nhất là xử lý mã đó bằng mã đám mây. Thao tác với một đối tượng PFUser không được xác thực từ phía máy khách sẽ làm tăng một số vấn đề bảo mật. Có chức năng điện toán đám mây như:

Parse.Cloud.define("stealGold", function(request, response) { 
    var query = new Parse.Query(Parse.User); 
    query.equalTo("objectId", request.params.targetObjectId); 
    query.find({useMasterKey : true}).then(function(results) { 
    // process the result of the query here 
    // Save the user object 

    }); 
    }); 

Bạn có thể đọc về nó trong tài liệu ở đây: https://parse.com/docs/data#security-cloudcode

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