gpt4 book ai didi

android - ParseObject.save() 抛出 IllegalArgumentException(无法保存未通过身份验证的用户)为什么?

转载 作者:太空狗 更新时间:2023-10-29 15:00:31 26 4
gpt4 key购买 nike

我在数据库中有一个表,我们可以称它为“A”,只有 2 列:

user (Pointer _User)
b (Pointer "B") (where "B" is another table in my db)

代码是:

    a.put("b", b);
a.put("user", ParseUser.getCurrentUser());
a.save(); //I manage my threading

在 a.save() 上抛出了标题中的 IllegalArgumentException,请有人能解释一下为什么?在“B”表中有一列指向另一个_User,希望问题不在于此!!!

这是 logcat 输出:

logcat output

最佳答案

来自官方docs

用户对象的安全

默认情况下,ParseUser 类是 protected 。存储在 ParseUser 中的数据只能由该用户修改。默认情况下,数据仍然可以被任何客户端读取。因此,一些 ParseUser 对象经过身份验证并且可以修改,而其他对象是只读的。

具体来说,您不能调用任何保存或删除类型的方法,除非 ParseUser 是使用经过身份验证的方法获得的,例如 logInsignUp 。这确保只有用户可以更改自己的数据。

以下说明了此安全策略:

ParseUser user = ParseUser.logIn("my_username", "my_password");
user.setUsername("my_new_username"); // attempt to change username
user.saveInBackground(); // This succeeds, since the user was authenticated on the device

// Get the user from a non-authenticated manner
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.getInBackground(user.getObjectId(), new GetCallback<ParseUser>() {
public void done(ParseUser object, ParseException e) {
object.setUsername("another_username");

// This will throw an exception, since the ParseUser is not authenticated
object.saveInBackground();
}
});

getCurrentUser() 获得的 ParseUser 将始终被验证。

如果您需要检查 ParseUser 是否已通过身份验证,您可以调用 isAuthenticated() 方法。您不需要使用通过身份验证方法获得的 ParseUser 对象检查 isAuthenticated()

关于android - ParseObject.save() 抛出 IllegalArgumentException(无法保存未通过身份验证的用户)为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27343724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com