【发布时间】:2019-03-30 20:35:41
【问题描述】:
我有一个使用 python-social-auth 进行身份验证的 Django 应用程序。
我的 django 设置中有这个:
SOCIAL_AUTH_PIPELINE = (
...
'my.app.my.custom.pipeline',
)
如何在我的自定义管道中停止整个用户创建过程?
我尝试抛出各种异常,包括ValueError 和AuthException,但创建的用户仍保留在数据库中。抛出异常不会逆转数据库事务吗?
【问题讨论】:
-
您的自定义管道是在 create_user 函数之前还是之后?如果用户已经创建,您需要手动删除它,抛出异常会导致管道停止,但已经保存的数据仍然存在。
-
@abidibo 我的自定义管道在最后。手动删除用户可能会起作用,但管道也会在数据库中创建一些其他数据。我正在寻找一个独立于实现的更清洁的解决方案,例如,逆转整个事务将是诀窍,但我该怎么做呢?
-
也许您可以将登录视图包装在事务中(docs.djangoproject.com/en/1.11/topics/db/transactions),但我以前从未这样做过
标签: python django python-social-auth