Como vocês fazem autenticação de usuários? Eu estou fazendo um sistema que precisa ter controle de usuários, com permissão de acesso a telas e operações como exclusão, alteração e inclusão.
Eu acabei implementando tudo, salvando no banco de dados os dados de logins e as permissões de cada tela. Eu guardo os dados do usuário na session e a cada tela que o usuário entra eu confiro no banco quais as operações ele pode executar em cada tela e só então eu monto a tela personalizada.
O que eu fiz até que ficou bem eficiente, mas eu acho que estou reinventando a roda e queria saber se há algum modo “padrão” de fazer esse tipo de controle.
Acho que está correto o modo que você descreve…
Se cada tela tem permissões diferentes para determinados usuários, a maneira que eu faria seria essa também…
Quem sabe na medida em que as telas forem sendo chamadas, elas já poderiam ser cacheadas, evitando o reprocessamento no banco… no mais td ok
Só p/ registrar se alguém precisar no futuro:
Eu construi minha solução usando um filtro que checa a cada requisição se há uma sessão para o usuário e se há um objeto usuário. Se não tiver ele encaminha o usuário para a página de login. Se existir um usuário na sessão eu checo as permissões do usuário e monto a tela personalizada.
A classe RequestProcessor do Struts também pode ser usada para interceptar as requisições do usuário, mas eu não preciso de nenhum mecanismo sofisticado, então eu só adicionei um filtro que é aplicado a todos os *.jsp.
eu tbm utilizo desta forma, através de filtros, no tomcat.
O único problema que eu vejo na sua solução, é vc ter q acessar o banco de dados cada vez que o usuário faz uma requisição, isto altera a performance da tua aplicação.
Eu aconselharia vc a ler somente na primeira vez q o usuário acessar o sistema, e carregar estas informações na memória, e nas próximas vezes vc acessa os dados da memória, o q é mais “barato” para o sistema.
Já comentaram isso comigo. Como meu sistema é pequeno e usa pool de conexões eu implementei dessa maneira mesmo. Se no futuro houver necessidade eu já deixei preparado para mudar para a sessão os dados.