OAuth和自定义Django用户模型如何协同工作?

时间:2013-11-01 23:32:34

标签: django oauth django-users

我使用自定义用户模型在我的网站中注册用户。它的工作方式是,当用户注册时,他/她的声誉为0,类似于Stack overflow。也就是说,为该用户创建了一个用户模型的新实例。

现在我想将OAuth添加到我的网站,但是,我不明白当新用户使用OAuth登录我的网站时,将为该用户创建一个新的django用户模型实例,这样就像注册一样我的网站并让用户以声誉0开头。

就像堆栈溢出实现的方式一样,如果用户有一个SO帐户,他仍然可以使用谷歌帐户登录并创建他的堆栈溢出配置文件,就像他在SO上注册一样。

我希望我的问题很明确, 我只需要知道在这种情况下一起工作的方式。谢谢你们。

1 个答案:

答案 0 :(得分:2)

OAuth只是一个登录流程,其中身份验证和数据由第三方提供。例如。谷歌,Facebook,Twitter,OpenID,雅虎等。 流程基本上是这样的:

  1. 用户访问您的网站并点击“使用XYZ登录”按钮。
  2. 您将用户重定向到第三方OAuth点。例如。 https://www.facebook.com/login.php
  3. 用户使用第三方登录
  4. 第三方使用某种代码/令牌将用户重定向回您的域名www.example.com/signin/?code=abcdef
  5. 您与第三方交换代码/令牌以获取用户信息,例如名/电子邮件。然后你要么:
    • 您在系统上使用此信息创建了一个帐户。
    • 您找到此用户的现有帐户,并以该用户身份登录该用户。
  6. 这有点抽象,只是OAuth所有选项的一部分,但它涵盖了基本的登录流程。所有带有你的块都是你需要准备/编码的步骤。例如。一个视图,它接受代码/令牌,并与您可以为用户登录/创建帐户的数据进行交换。

    大多数第三方都有很好的文档说明如何使用他们的API完成注册。

    但是你必须手动创建一些逻辑,因此使用自定义用户模型没有任何好处或缺点。

    如果这不能回答你的问题,请详细说明你的意思。