django:是否有可能将用户从另一个域注册到子域中?

事情是。 我有一个Django应用程序服务于不同的网站。

site1.myapp.com
site2.myapp.com

用户通过第三方SSO系统登录,然后重定向(inkl。valdiation POST)到https://myapp.com/auth/

然而。 由于我的用户都属于只有1个“站点”,我希望myapp.com/auth/将用户登录到相关站点,例如。 site1.myapp.com或site2.myapp.com,然后将它们重定向到该网站...

这是可能吗?? 或者我应该以完全不同的方式去解决这个问题? :)

我应该提到,当涉及应用程序的一般用法时,我有子域中间件以确保用户始终只访问其帐户有效的子域(和数据)。

我想使用子域名的原因是为了让用户简单记住他们的帐户网址,同时保持必须维护一个django应用程序的优点。

谢谢。 希望你能帮助:)

亲切的问候。

皮特


在Django中你有网站的概念。 您可以创建自己的登录视图。 如果这还不够,您可以创建自己的认证后端。


我知道这个问题很老,但是因为谷歌把我带到这里,我会添加这些链接

这个答案涉及(A)跨子域的认证和(B)检测哪个子域正在使用以潜在地重定向用户

A.1。 如果您想要允许所有(通配符)子域* .myapp.com ,则可以通过在settings.py中添加一行来实现:

SESSION_COOKIE_DOMAIN=".myapp.com"

(注意它现在不能在本地主机上运行)

这里详细说明(SO,2009),这里(SO,2010)和Django文档

A2。 如果你想在这两个子域之间进行交叉认证 ,即它们不会被登录到site3.myapp.com ,那么它会变得更复杂一点

B.查看正在使用的子域在django中有更好的包来管理子域,但你可以在request.META ['HTTP_HOST']:

try:
    http_host = request.META['HTTP_HOST']
except KeyError:
    print "Can't find HTTP_HOST"

if http_host:
    if '.myapp.' in http_host:
        subdomain = http_host.split('.myapp.')[0]
    else:
        subdomain = ''

然后检查你是否满意使用这个subdomainrequest.user 。 如果您喜欢,请使用类似HttpResponseRedirect方式将它们发送到不同的子域。 如果你已经完成了上面的A.1或A.2,在你的应用程序的眼中,它们在被重定向后在新的subdomain.myapp.com中是同一个用户(已经登录)(他们不必登录再次)。

示例:如果用户使用ireland.myapp.com创建帐户,并且希望始终将其保留在该网站上,那么当他们尝试访问usa.myapp.com时,他们仍然会登录,您可以识别它们并将它们发回ireland.myapp.com(虚构的例子,而不是移民的隐喻!)

链接地址: http://www.djcxy.com/p/5769.html

上一篇: django: Is it possible to log a user into a subdomain, from another domain?

下一篇: Allow duplicate usernames