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 = ''
然后检查你是否满意使用这个subdomain
的request.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?