我正在创建一个支持多个域的Web应用程序。例如,如果我的应用名为www.webapp.com
,我也会有众多客户通过DNS CNAME映射将其域名映射到我的网站,即webapp.yourdomain.com CNAME www.webapp.com
和foo.anotherdomain.com CNAME www.webapp.com
等等。< / p>
我希望用户通过Google或Facebook(OAuth 2.0)对我的应用进行身份验证 - 没有我(或域名所有者)必须为每个映射域创建单独的Google / Facebook应用。理想情况下,我会让基本域充当代理,并在响应回调URL时重定向到适当的映射域。例如,访问webapp.yourdomain.com/accounts/facebook/login
的用户将使用回调网址www.webapp.com/accounts/facebook/login/callback
对Facebook进行身份验证。处理请求时,我可以找到适当的上下文,并重定向到webapp.yourdomain.com/accounts/facebook/login/callback
,进行真正的身份验证(并设置特定于域的身份验证cookie)。
那么,这在django-allauth中是否可行?需要多少黑客攻击?或者,Django是否有另一种社交身份验证解决方案可以更容易实现?
答案 0 :(得分:1)
您应该将Django站点框架与django-allauth一起使用。
使用者密钥,令牌使用Django站点框架。这是 特别有助于更大的多域项目,但也允许 用于在开发(localhost)和。之间轻松切换 生产设置,不会弄乱您的设置和数据库。
只需在管理员后端配置每个社交应用。