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

Dúvida no Ex. 2 da Aula 4 - Autenticação e segurança

Gostaria de saber como seria no caso do projeto ter três tipos de usuários diferentes, os quais devem se registrar e fazer login, mas ter acesso a áreas específicas dentro do site.

Devo cadastrar todos os usuários na tabela users e criar um campo novo com o status de cada um? Seria esse o melhor caminho?

OBS: A princípio um usuário somente tem um perfil e não vários.

3 respostas

Olá Pierre,

O controle de acesso a conteúdos/áreas específicas pode ser realizado de várias maneiras. O mais comum é por meio de flag (campo) no banco que identifique o seu tipo (visitante, aluno, administrador, etc).

Após efetuar login na aplicação, esse flag que pode ser guardado em sessão no servidor servirá de base para decidir qual conteúdo (páginas, menus, etc) serão exibidos ao usuário.

Espero ter ajudado.

Bom estudo.

Olá Bruno,

Então acho que o ideal é manter todos os usuários juntos na tabela users e criar nesta tabela um campo para identificar o grupo de cada um.

Mas pensando um pouco além, se meus usários tiverem diferentes características unir todos no mesmo Model talvez seja complicado. Por exemplo, se o grupo 'aluno' tiver um relacionamento com o modelo 'turma', que os outros usuários não devem compartilhar (e cada um pode ter também seus próprios relacionamentos).

Enfim, isso pode ser resolvido colocando a mesma lógica das flags dentro da funcão do relacionamento, mas isso é uma boa prática?

Obrigado desde já pelas orientacões.

Abs,

Pierre

solução!

Olá Pierre!

Desculpe a demora em responder. Então, neste caso a boa prática é conceder acesso a grupos e não a usuários especificos.

Neste caso dá uma pesquisada por modelos relacionais com exemplos de modelagem para controle de acessos. Em boa parte dos exemplos você encontrará algo parecido com a estrutura abaixo:

Área/Conteúdo - ID Area - Nome da Area

Grupos - ID Grupo - Nome do Grupo

Usuarios - ID (login) do Usuario - Nome do Usuario

Acessos - ID Grupo - ID Area - Tipo Acesso

Adicionalmente na tabela de usuário pode existir um campo (boolean) que indica se esse cara tem acesso FULL (Adm).

Enfim, existem inúmeras formas de modelar e projetar controle de acessos, uma parte que deve se ter em mente em tudo isso é o quão intuitivo ficará a interface para o adm conseguir gerir tudo isso. Afinal, o objetivo de qualquer sistema deveria ser: "facilitar a vida do usuário." e não trazer soluções para problemas que ele não tinha. Rsrs.

Abraço!