Preciso de ajuda para criar uma solução viável na parte de segurança,
tenho pouca experiência com desenvolvimento.
A situação:
Quando elaborei a primeira versão da regra de negócio do meu sistema
foquei somente nos requisitos de minha aplicação
desprezando inicialmente a questão da autenticação e segurança (ACL).
Para versão teste empreguei a forma mais simples de autenticação no
cake (Auth) usando somente uma tabelinha de usuarios,
"id","login","senha".
Agora depois de cumprir com os requisitos da primeira versão é hora de
aumentar o escopo da aplicação com diferentes tipos de usuários e
funções, estou estudando como empregar autenticação de uma forma mais
avançada, ou seja, Tenho usuários em vários níveis no sistema, preciso
que o sistema autentique e redirecione o usuário de acordo com o grupo
ao qual pertence, sei que tem existir a tabela grupo e a tabela
usuário mas não sei usar, (DEU UM BRANCO TOTAL) como faço o
redirecionamento? considerando que cada grupo de usuário incluindo o
adminstrador do sistema deverá ter um painel específico com suas
funções.
Questões a respeito:
1)Devo continuar com o 'Auth' sendo que existem outros métodos de
autenticação?
2)Qual dos métodos de autenticação combina melhor com o sistema de
ACL?
3)Como faço redirecionamento meu deus!? (se tiverem uma manha?)
4)Porque deram a um dragão de sete cabeças o nome de ACL? (Que mostre
a 'cripitonita' deste dragão quem a possuir )
Me ajudem!
Um dia prometo que escreverei um livro com o nome "Boas Práticas no
CakePHP".
Farei uma singela homenagem a cada participante desta postagem.
A todos os garotos de programa
Muito Obrigado!
Thiago de Oliveira
O ACL + Auth funcionam da seguinte forma:
O ACL vai pegar o seu id de grupo ou de usuário (ARO), e verificar
quais deles tem acesso aos (ACOS), veja que existe uma tabela de
ligação com aros_acos...
Os acos e aros utilizam uma estrututa re árvove:
exemplo de aco:
controller
cursos
index
editar
excluir
$usuario = 1;
Se você der permissão para o usuario: $this->Acl-
>alow($usuario,'controller');
Esse usuário terá permissão de root, uma vez que o controller é a raiz
de nosso controle de negocio.
Agora supomos que esse usuario tenha acesso a raiz, mas não quero que
ele tenha permissão para editar e excluir os cursos do sistema:
$this->Acl->denny($usuario,'Cursos/editar');
$this->Acl->denny($usuario,'Cursos/excluir');
Dessa forma quando o usuário requesitar a action Cursos/editar ou
Cursos/excluir, o acl vai bloquear o acesso desse usuário, as actions
desse controller.
Eu aprendi ACL com esse tutorial: http://mark-story.com/posts/view/auth-and-acl-an-end-to-end-tutorial-pt-1
e para fazer redirecionamento, utilize o metodo redirect do controller:
$this->redirect(array(controller, action))....
Espero ter ajudado.
Jóia?
T+
> --
>
> Você está recebendo esta mensagem porque se inscreveu no grupo "Cake
> PHP Português" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para cake-...@googlegroups.com
> .
> Para cancelar a inscrição nesse grupo, envie um e-mail para cake-php-pt...@googlegroups.com
> .
> Para obter mais opções, visite esse grupo em http://groups.google.com/group/cake-php-pt?hl=pt-BR
> .
>
>