Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Segurança - Sessões e Níveis de permissões dos usuários

Além do controle de sessão, precisamos definir por exemplo, e muito comum, os níveis de permissão em um sistema. Neste caso quando um usuário não é do grupo administrativo, por exemplo, ele não teria permissão de ver a listagem, apenas cadastrar, qual seria a forma correta de implementar esse controle?

5 respostas

Olá Emiliano,

creio que com a utilização de acl's, antes de qualquer operação que necessite de privilégios especias é verificado a acl do usuário caso negado retorna erro 403 e etc.

Aguarde por mais repostas.

Att,

solução!

Olá, Emiliano.

Como o Ramon disse, é comum a utilização de ACL's.

Só complementando como você pode aplicar isso de forma simples:

Você pode ter junto aos dados do usuário no banco, a informação de a qual grupo ele pertence. E pode também ter informações sobre o que cada grupo (ou usuário específico) pode acessar. A partir desses dados no seu banco, você consegue fazer as devidas verificações no código.

Aqui tem um exemplo: http://www.developer.com/lang/php/creating-a-custom-acl-in-php.html

Como o foco do exemplo não é boas práticas, etc, sugiro que altere o código, melhorando-o, caso o utilize como base, mas o exemplo é válido.

Perfeito Ramon e Carlos Vinícius.

Já tinha dado uma olhada nesse exemplo e vou fazer uns testes aqui. Como vinha acompanhando as aulas de PHP e MySQL I e a II queria entender como ele controlaria as requisições (interceptors?) para filtra-las e liberar o acesso a algumas páginas ou se temos que colocar manualmente. Encontrei outros exemplos com CodeIgniter e eu acho que middleware no Laravel. Não sei se temos que recorrer a esses frames para não reinventar a roda e se seria nessa direção com interceptors, como no exemplo ele tem que passar pela ACL antes de acessar os recursos.

Então, Emiliano!

Eu sou muito fã de "reinventar a roda".

Eu acho que se eu souber fazer algo na mão, vou conseguir controlar melhor um framework utilizado.

Em PHP criar um FrontController (arquivo que recebe todas as requisições e as redireciona) é bem fácil.

Se tiver alguma dúvida nesse quesito, pode abrir uma nova dúvida que eu tenho algumas boas formas de aplicar isso sem utilizar ferramentas externas.

Agora, é inegável que saber utilizar um framework é indispensável para o mercado. Como você citou, o Laravel tem o conceito de Middlewares, que interceptam seu request e podem fazer tratamentos e verificações caso necessário.

Também não tenho nenhuma objeção Carlos Vinicius kkk E a intenção era fazer na mão mesmo, a opção por um framework seria depois de entender bem o processo no PHP,Vou abrir, agora mesmo, a nova dúvida. Obrigado pela ajuda.