Django python-social-auth:disconnect与disconnect_individual功能咨询
嘿,我来给你拆解下这个disconnect_individual端点的具体用处,刚好对python-social-auth的这部分逻辑挺熟悉的~
首先得和你已经了解的disconnect端点做个对比:
disconnect(/oauth/disconnect/<backend>/)的作用是批量删除当前登录用户所有与指定<backend>(比如Facebook、Google-Plus)关联的UserSocialAuth表条目,不管用户绑定了几个该服务商的账号,都会一次性清空。- 而
disconnect_individual(/oauth/disconnect/<backend>/<association_id>/)是做精准单条删除的——它会根据传入的<association_id>(也就是UserSocialAuth表中对应关联记录的主键ID),只删除当前用户名下的这一条特定关联,其他同服务商的关联记录会被保留。
举个实际场景:假设某个用户同时用两个不同的Google账号绑定了同一个本地系统账号(这种情况虽然不普遍,但python-social-auth是支持的),如果用disconnect端点调用/oauth/disconnect/google-plus/,会把两个Google账号的关联都删掉;但如果用disconnect_individual调用/oauth/disconnect/google-plus/456/(这里456是其中一条关联记录的association_id),就只会解绑指定的那个Google账号,另一个Google账号的关联依然有效。
简单来说,这个端点是为精细化的解绑需求设计的——当你不需要清空用户所有某服务商的关联,而只是要移除其中某一个特定的社交账号绑定关系时,就会用到它。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

