php - 解析 PHP 当前用户更新失败但会话已更新
问题描述
在 Parse PHP SDK 如果当前用户想正常更改他的电子邮件/用户名 Parse 检查其他用户是否使用了用户名,如果使用它将返回错误,现在这很好并且到目前为止工作正常但问题是会话是自动更新到失败的新值。
所以基本上当前用户的会话更新,即使它不是后端
重现步骤
$currentUser = Parse\ParseUser::getCurrentUser();
echo "Current Username is : ". $currentUser->get("username");
if ($currentUser) {
$currentUser->set("username", "ww");
try {
$currentUser->save();
echo "UPDATED";
} catch (Parse\ParseException $er) {
$ex = $er->getMessage();
echo "<br> Error: ". $ex;
}
}
这是一个解释更多的视频:
解决方案
由于您已在 PHP 应用程序中更新了对象,因此除非您重置操作,否则它将在本地保持更新。所以你可以:
- 保存旧用户名并在您的 catch 方法中反转操作;或者
$currentUser->fetch()
在你的 catch 方法中使用;或者- 实例化一个新的用户对象,在这个新对象中进行更改尝试,最后
$currentUser->fetch()
仅在成功的情况下进行。
请参阅以下可能的解决方案之一:
$currentUser = Parse\ParseUser::getCurrentUser();
echo "Current Username is : ". $currentUser->get("username");
if ($currentUser) {
$currentUser->set("username", "ww");
try {
$currentUser->save();
echo "UPDATED";
} catch (Parse\ParseException $er) {
$currentUser->fetch();
$ex = $er->getMessage();
echo "<br> Error: ". $ex;
}
}
推荐阅读
- url - 带有 uid 的 window.open URL 包含
- javascript - Node.js:fs.existsSync 在 Heroku 上不起作用
- reactjs - React Firebase 更新组件而不刷新
- azure - Azure 应用服务能够使用托管标识(无应用角色)调用另一个受 AAD 保护的应用服务,为什么?
- java - JPA:一个实体但不同的表
- php - Laravel 不会在内核文件中设置本地化 - 它仅在我在 routes/api.php 中设置时才有效
- wampserver - 从 3 个服务运行的 2 个 wampserver 服务查询
- event-handling - Hasura:使用无服务器功能保护事件触发器
- javascript - VUE 前端和 PHP 后端/Api 的问题/问题
- jquery-select2 - Vue3 Composition API watcher 立即触发,但它应该是惰性的