Curiosidade: Tabelas de Usuário

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”.

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…

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.

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.

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 ?

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.

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...
}

.
.
.
.

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.

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

No map de acesso, sim.

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

Obrigado.

Ué, eu já postei. :shock:

O que mais você quer?

[quote=ViniGodoy]Ué, eu já postei. :shock:

O que mais você quer?[/quote]

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