Curiosidade: Tabelas de Usuário

12 respostas
guilherme.dio

Só por curiosidade, queria saber como vocês tem costume de estruturar as tabelas de usuário de um sistema ?

Porque eu tenho o costume de fazer uma tabela de Usuário guardando Nome, login e senha e um FK de uma tabela externa onde configuro tipos de acesso em cada linha.

Por curiosidade mesmo, como vocês tem costume de fazer isso ?

Assim posso até ver outros modos “melhores”.

12 Respostas

douglaskd

eu acho que seria legal deixa a primeira/e/ou/segunda letra do código de acesso com as iniciais do modulo

e então padronizar E3001 - visualizacao, E3002 - leitura/gravacao/alteração/, E3003 - Acesso Supervisor, E3004 - Acesso Gerencial

Acesso(codAcesso,Descricao)

Usuario(idUser,nome,…)

Usuario_Acesso(idUser,codAcesso)

Usuario(1,1) <-> (0,N) Usuario_Acesso <-> (0,N) <-> Acesso(1,1)

se eu quero dar acesso a visualização da tela de estoque, sabendo que na tabela Acesso ja possu um tipo de acesso cadastrado: (“E3001”, “Acesso de visualização da tela de estoque”)

Insert into Usuario_Acesso(idUser,codAcesso) values (1210,“E3001”);

tipo assim…

ViniGodoy

Eu faço parecido. Mas no lugar da senha, guardo só o hash da senha.

Tópico movido para o fórum de persistência.

A

Eu geralmente uso as seguintes tabelas:

Funcionalidades(id, descrição)
Usuarios(id, nome_de_usuario, hash_senha, email)
Perfil(id, nome)
Usuarios_Perfil( id_usuario, id_perfil )
Perfil_Funcionalidade (id_perfil, id_funcionalidade)

  • Tendo a organizar em perfil, pois o número de funcionalidades tende a crescer muito.

  • Deixo associar mais de um perfil ao usuário para facilitar o gerenciamento

  • O email na tabela de usuarios é para reset de senha e similares.

douglaskd

acho que outra forma que daria pra montar pra ficar legal…é Grupos de usuário, assim como existe no AD

e o controle sendo feito por um sistema parecido com o AD, gerenciando grupos/usuários.

existe alguma forma de integrar um sistema no AD, para que o usuário do windows seja o usuário do sistema? se o usuário alterar a senha do windows altera a senha do sistema

ou o sistema acessar o AD verificar o grupo do usuario e liberar/bloquear acessos…

sabem se isso é possivel ?

Ironlynx

guilherme,
depende dos requisitos!

Se for um sistema ridículo com 1 ADM e 10 usuários, pode até ser um atributo da entidade usuário.Mas geralmente, o bom e velho Usuario-Perfil é o que mais uso.Não crio diferentes níveis de acesso se NÃO faz parte do escopo nem é necessidade dos mantenedores do sistema.

guilherme.dio

E vocês fazem ifs para montar os menus e etc ?

por exemplo:

if(usuario.getAcesso().isConfiguracaoSistema())
{
   //adiciona botao de config. do sistema
}
if(usuario.getAcesso().isAdministracaoEstoque())
{
   //Botão...
}

.
.
.
.
ViniGodoy

Só se o conjunto de modificações na tela for muito pequeno.

Caso contrário, associo as telas ao perfil num map.

Tela t = mapTelas.get(usuario.getAcesso()); t.setVisible(true);

Dá para fazer isso em web também.

guilherme.dio

Ai vc guarda na tabela de acesso o(s) URL(s) da Servlet/Controller/etc… que o perfil tem acesso ?

ViniGodoy

No map de acesso, sim.

guilherme.dio

Vini, consegue postar um trecho de código de exemplo dessa sua metodologia pra disponibilização de acesso p/ usuários…

Obrigado.

ViniGodoy

Ué, eu já postei. :shock:

O que mais você quer?

guilherme.dio

ViniGodoy:
Ué, eu já postei. :shock:

O que mais você quer?

Digo, um trecho de código da montagem de um menu(por exemplo) utilizando esse método de liberação de acesso.

Criado 20 de abril de 2012
Ultima resposta 22 de abr. de 2012
Respostas 12
Participantes 5