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