Olá mais uma vez.
Aqui estou eu novamente pedindo opiniões de você que tem mais experiência. Estou desenvolvendo a parte de níveis de acesso no meu sistema, e estou um pouco inseguro da maneira que devo fazer para controlar o usuário que está logado no sistema.
Pensei em criar um public Usuario na tela de login, e acessar ele nas demais telas, mas por causa da minha falta de experiência não sei se essa é a melhor maneira, ou se talvez exista alguma forma mais “correta” de se fazer. Ou até mesmo se existe alguma funcionalidade da linguagem que possa me ajudar.
Cogitei a ideia de criar uma tabela no BD, tipo uma UsuarioLogadoTable, e armazenar o usuário lá.
Meu sistema está sendo escrito em C#, e é desk.
Desde já agradeço a ajuda de todos.
Tudo depende da complexidade que você quer ter e do que pretende fazer com os dados do usuário logado. Sendo um sistema desktop, acredito que a solução mais simples seja um struct ou uma classe pública (até mesmo estática) que armazena os dados do usuário logado. Sempre que a aplicação for iniciada, o usuário faria login novamente.
Ter alguma forma de persistência (local ou no banco, como você imaginou) faz mais sentido se você quer manter o usuário logado caso ele feche a aplicação. Mas vai requerer outros controles.
Abraço.
No caso o usuário faz parte de algum grupo de acesso. Esse grupo possui determinado nivel de acesso para cada uma das telas. Sendo assim preciso verificar o usuário que está logado, e de qual grupo ele faz parte, e então verificar qual permissão ele tem em cada tela.
Mas pensando mais adiante, acho que vou acabar armazenando ele no banco.
Sim, você vai precisar armazenar os dados no banco. É assim que vai comparar, por exemplo, os dados do usuário (login e senha) para ver se ele pode acessar o sistema ou não. Isso é inevitável.
Minha resposta partiu do princípio que você estava com dúvida em como armazenar os dados do usuário dentro da aplicação, quando ele já fez o login, por isso sugeri estruturas da própria linguagem C#, pois é lá que você pode armazenar os dados depois do login. Ou seja, você terá no banco de dados tabelas referentes a login e permissões, e na aplicação C# terá alguma estrutura para armazenar coisas como o nome do usuário logado (pode ser uma simples string numa classe estática, ou algo mais complexo, dependendo do caso).
Abraço.