(Django) autenticação Sharing em dois locais que estão em diferentes domínios

votos
13

Eu tenho dois sites dizem foo.com e bar.com e são ambos baseados Django. Registro primária ocorre em foo.com (eu gostaria a principal db usuário seja aqui) e eu gostaria que três coisas a acontecer:

1) O usuário que efetua login foo.com é automaticamente acessar a bar.com sem efetuar login novamente

2) O utilizador que regista no bar.com directamente é autenticado contra db utilizador foo.com.

3) Não há necessidade de um usuário se registrar no bar.com diretamente.

Como posso conseguir isso? Se ele simplifica muito as coisas que eu posso fazer bar.com um subdomínio do foo.com (eg. Bar.foo.com), mas eles devem ser locais separados.

Publicado 17/10/2009 em 05:48
fonte usuário
Em outras línguas...                            


4 respostas

votos
5

Seu terceiro exigência poderia ser facilmente resolvido através da partilha do mesmo banco de dados entre os dois locais (portanto, ter mesa os mesmos usuários.

O 1º exigência é complicado por causa de problemas entre domínios (o cookie de sessão não será compartilhado).

O que você está procurando realmente é um Single Sign On (SSO) . Você pode considerar django-OpenID .

Respondeu 17/10/2009 em 06:02
fonte usuário

votos
-1

Eu acho que o que você está procurando é a SESSION_COOKIE_DOMAINconfiguração. Você poderia defini-lo como este:

SESSION_COOKIE_DOMAIN = 'foo.com'

Veja http://docs.djangoproject.com/en/dev/topics/http/sessions/#session-cookie-domain para mais informações sobre isso. Isto assume que ambos os aplicativos estão usando o mesmo backend armazenamento de sessão.

Respondeu 17/10/2009 em 06:13
fonte usuário

votos
4

Tudo depende das suas necessidades. Se você é capaz de, a solução mais simples é simplesmente hospedar os sites em uma instância Django. Em outras palavras, seu projeto Django hospeda ambos os sites, mas você tem uma url reescrever regra que mapeia foo.compara http://localhost/foo/e bar.compara http://localhost/bar/. Sistema de autenticação do Django vai "simplesmente funciona" sob este cenário. Reescrever as regras pode, naturalmente, se aplicam também para subdomínios; Eu construí um sistema que hospeda centenas de subdomínios usando esta técnica.

Se isto não é uma opção, a partilha de bases de dados entre suas instâncias Django e configuração SESSION_COOKIE_DOMAIN, como mencionado por outros, deve funcionar.

Respondeu 17/10/2009 em 07:47
fonte usuário

votos
4

Eu tive um problema muito semelhante, mas OpenID não era uma solução viável para mim. Com o advento dos vários bancos de dados em Django> 1.2, agora é muito fácil de compartilhar dados de sessão e login em sites. Este post faz um ótimo trabalho de explicar como obtê-lo configurado. Esperemos que outros acham isso tão útil como eu fiz.

Respondeu 12/07/2011 em 00:32
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more