Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Tenho um guia comercial voltado para cidades, cada cidade cadastrada neste sistema possui um site próprio, exemplo...
recife.com
alagoas.com
rio.com
saopaulo.com
Este sistema possui um sistema de login, no atual o usuário acaba tendo que se registrar em cada um dos sites... porém sendo sites de um único grupo eu gostaria de fazer um sistema de login único... ou seja... se o usuário se registrar no domínio 1 ele poderá ter acesso ao domínio 2, estilo o google... aonde se você cadastrar nele poderá se logar no youtube, groups... e por ai vai.
Minha dúvida é em como fazer o sistema, qual a lógica mais utilizada e indicada neste caso, o que me sugerem???
Crie uma Tabela no banco pra cada site.
Achei uma solução válida para o meu caso, deixarei aqui registrado para ajudar outras pessoas com o mesmo problema.
-----
Quando trabalhamos na área de desenvolvimento de software, fatalmente há situações onde suas aplicações precisam "conversar" umas com as outras. Em muitas destas ocasiões, um determinado SITE B, recebe um visitante que necessita estar devidamente autenticado pelo SITE A. Através deste pequeno tutorial, explicarei como realizar este procedimento utilizando o framework CakePHP, com o qual tenho trabalhado intensamente nos últimos meses, obtendo notáveis índices de sucesso e integração da equipe e aplicações.
Suponhamos que temos duas aplicações, onde a primeira (SITE A) possui toda a implementação de validação de login e senha, e que somente por ela será possível que o usuário realize a autenticação com suas respectivas informações de acesso, e uma segunda (SITE B), que eventualmente este mesmo usuário terá acesso, no entanto, conforme já explicado, este terá de estar autenticado através do SITE A.
O que precisamos fazer para que estas duas aplicações conversem e atendam ao nosso contexto, será necessário inicialmente alterar algumas configurações no core.php de um ou ambos os sites para que possamos dizer ao SITE B, que utilize a sessão criada pelo SITE A, informando a SESSION ID.
Vamos ao passo a passo:
Após realizar os três passos supra citados no core.php, nossos aplicativos estarão prontos para compartilhar a sessão, no entanto, ainda há a necessidade de implementar pequenas modificações no app_controller.php do SITE B, para que esta receba via parâmetros URL, o valor da sessão a ser utilizada.
Crie o método beforeFilter() no app_controller.php do SITE B conforme abaixo (caso não o tiver):
Agora para que o procedimento funcione, basta passarmos por URL para o SITE B, o SESSION ID da sessão gerada pelo SITE A. Como o valor da SESSION ID é diferente para cada usuário logado, utilizamos o próprio método do CakePHP para obter o valor dentro de um link por exemplo:
echo $html->link('Ir ao SITE B', "http://enderecoSiteB/usuarios/index?sid=" . $session->id() );
A partir de agora, toda vez que o usuário, no SITE A clicar no Link, o código da sessão será passado. O SITE B por sua vez, receberá este valor e passará a trabalhar com estas informações e suas aplicações estarão devidamente integradas.
Esta é uma forma simples e rápida de resolver o problema da integração de sessão entre aplicações CakePHP, no entanto, quem quiser uma forma ainda mais segura para realizar o mesmo processo, recomendo também este artigo de SOTA, Yasuhiro: http://jamnite.blogspot.com/2009/03/more-secure-way-to-transfer-session.html
Fonte: http://www.thiagoelias.org/site/posts/ler/94