【问题标题】:Shouldn't user.destroy() function also destroy session on Parse-Server?user.destroy() 函数不应该也破坏 Parse-Server 上的会话吗?
【发布时间】:2020-05-21 13:04:39
【问题描述】:

我正在使用 Parse-Server3.9.0 在 back4app 上部署一个反应原生应用程序。我有一个云功能可以像这样删除用户:

Parse.Cloud.define("deleteUser", async (request) => {
    if (!request.user) {
        throw 'no user logged in. Impossible to delete account';
    }
    else {
       return await request.user.destroy({useMasterKey:true});
    }
});

从客户端调用它后,currentuser 变为 null,并且该用户被正确地从 '_User' 表中删除。但是,会话仍保留在“_Session”表中!对我来说这看起来像是一个错误,但我对 Parse 没有足够的信心来声明它。我可能错过了什么。有什么想法吗?

祝你有美好的一天,

朱利安

【问题讨论】:

    标签: session parse-platform parse-server back4app


    【解决方案1】:

    它按预期工作——您要求 Parse 删除用户,而不是会话。它们是两个独立的对象,因此必须分别删除。

    您可以在云代码中使用afterDelete 挂钩来删除与用户关联的任何会话或安装对象。

    【讨论】:

    • 感谢您的回复!在这种情况下,我相信 SDK 的文档令人困惑。这是对用户对象的 destoy() 的解释:“使用在当前用户被销毁时注销当前用户的功能包装默认的销毁行为”。在 Parse 的逻辑中,“注销用户的功能”也删除了活动会话表单磁盘。是否存在删除用户后保留会话有用的用例?否则我可以尝试在 Parse 上添加此功能。
    • @JulienGraisse 我不能真正代表 Parse 制造商所做的设计决策,但如果我不得不猜测,它的行为方式是为了保持连续性。在其他情况下,销毁对象不会导致关联对象也被销毁,因此可能会给开发人员带来很多混乱。我不知道为什么有人想要保留 Session 对象而不是用户的一个很好的原因,但是如果销毁一个对象隐式地销毁另一个对象,它可能会带来很多混乱,所以我想这就是为什么它不能那样工作的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 2015-07-02
    • 2013-11-10
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多