优化 unlinkAccounts(在重新设计数据库结构后): 为单一登录方法的主要用户简化 removeAccountInfoReservation

作者: porcellus创建于 2026年2月19日更新于 2026年2月19日

上下文
在 AuthRecipe.java(unlinkAccounts)中,当解除连接一个是主用户且只有一个登录方法的配方用户时,我们调用 removeAccountInfoReservationForPrimaryUserForUnlinking_Transaction 方法。此方法运行复杂的 NOT IN 查询,以检查哪些 primary_user_tenants 条目仍然由其他连接的配方用户覆盖。

优化
当 primaryUser.loginMethods.length == 1 时,根据定义,不存在其他连接的配方用户。NOT IN 子查询总是返回空结果,因此不需要复杂的逻辑。我们可以通过直接删除用户的所有主权利来简化此操作。

位置

src/main/java/io/supertokens/authRecipe/AuthRecipe.java — unlinkAccounts 中 primaryUser.loginMethods.length == 1 分支。

内容来源: supertokens/supertokens-core