在SocialAppDjang中扩展用户模型或自定义管道

2024-04-24 12:47:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我用django1.11(不使用Mongo)实现social-app-django(不是弃用的那个;依赖Python社交身份验证的)。我的应用程序需要存储和操作用户的大量数据,而不是登录时从他们的社交媒体帐户获取的数据。在

当用户进行身份验证时,我不需要获取或收集任何额外的数据,但是他们在我的网站上执行的各种操作需要保存到他们的用户模型中。我想知道以下哪种方法是首选的(我在网上搜索了很多,但找不到一个具体的解释,为什么要使用一种方法而不是另一种方法):

  • 在我的应用程序中创建我自己的用户模型模型.py(称之为MyUser)它不扩展任何特殊的内容,然后在身份验证管道中添加一个函数,将社交应用django用户与相应的MyUser实例相关联。保持AUTH_USER_MODEL和{}不变。在

    或者。。。

  • 在我的应用程序中创建我自己的用户模型模型.py在项目的设置.py将AUTH_USER_MODELSOCIAL_AUTH_USER_MODEL设置为指向MyUser。保持管道不变。在本例中,我想知道是否有人可以澄清MyUser及其管理器应该扩展什么,以及我需要导入什么模块.py(我很困惑,因为很多堆栈溢出帖子都引用了这个模块的不推荐版本,而且我不断地得到错误)。另外,在这种情况下,我应该同时设置^{SOCIAL_AUTH_USER_MODEL,还是只设置其中一个?

这两种方法在本质上是否达到了相同的目的?是不是因为某种原因更可靠/更受欢迎?或者,我应该同时做这两件事吗?非常感谢您的帮助。在

另一个细节:我希望能够访问用户数据库,不仅从我目前正在建设的应用程序,而且从其他应用程序(在同一个Django项目内),我将在未来建立。这有什么影响吗?在


Tags: 数据项目django方法用户py模型auth
1条回答
网友
1楼 · 发布于 2024-04-24 12:47:26

因为我看到这有相当数量的意见,我将张贴我最终得出的解决方案。在

django和{}(或任何其他社交身份验证模块)都使用默认的User模型进行身份验证。虽然可以编辑此模型以添加自定义参数,但我不建议这样做。这不是很好的抽象或模块化。如果在配置模型时出错,不仅会破坏站点上的特定功能,还可能破坏身份验证本身。在

我能想到的唯一情况是,如果您需要进行影响身份验证流本身的更改(例如,添加您自己的自定义身份验证提供程序),则需要编辑默认用户模型本身。

创建一个名为UserProfile的新模型更加简单和安全,它需要与User对象建立一对一的关系。现在,您可以将User对象视为身份验证部分,UserProfile对象作为内容/存储部分。您不必经常使用User模型,UserProfile模型对于身份验证来说并不重要。注意,在这个配置中,您不需要更改设置.py文件。在

如果采用这种方法,则需要在身份验证管道中添加一个自定义步骤,在该管道中创建一个新的UserProfile对象,并将其与当前正在登录的User相关联。在

相关问题 更多 >