none
Autenticação Windows Forms RRS feed

  • Pergunta

  • Pessoal, estou começando a desenvolver aplicações windows, tenho experiência em desenvolvimento WEB e cheguei a criar alguns módulos em sistema VB6.
    Atualmente estou projetando uma aplicação e logo de cara me deparei com a seguinte dúvida.
    Essa aplicação vai trabalhar com perfis de usuários, que são armazenados no SQL, esse perfis são responsáveis pelo tipo de permissão que cada usuário vai ter no sistema.

     

    Ex. Usuário do tipo admin pode tudo, alterar, excluir, incluir, já o usuário do tipo editor pode apenas aprovar matérias e etcc.

    Quanto a criar os perfis não vejo problemas, mas a grande dúvida esta sendo na forma de compartilhar essas informações com os demais formulários da aplicação.

    Em uma aplicação web eu guardaria todas essa informações em sessões, no VB6 trabalhavamos com variáveis globais, no C# devo trabalhar como?

    Valeu galera,
    abs
    Coca


    sábado, 20 de dezembro de 2008 18:21

Todas as Respostas

  • Olá David, seja bem-vindo ao fórum!

     

    O .NET possui um modelo de segurança (Role-based Security), onde você trabalha com base em dois conceitos: Principal e Identity.

     

    A Identity representa um usuário específico, e um Principal está diretamente ligado à uma Identity juntamente com todos os seus atributos (Ex: Grupos que esta Identity pertence).

     

    Respondendo sua pergunta diretamente, as informações do usuário logado ficarão armazenados em um lugar "global" para toda a aplicação em:

     

    Code Snippet

     

     System.Threading.Thread.CurrentPrincipal

     

     

    Essa propriedade retorna um objeto que implementa uma interface do .NET chamada IPrincipal, e a partir dessa interface você pode consultar se o usuário pertence à um grupo ou não.

     

    Creio que os artigos abaixo podem responder algumas de suas dúvidas:

     

    Insight into Security Model using Principal and Identity Objects in .NET
    http://www.codeproject.com/KB/security/SecurityModelDotNet.aspx?display=Print

     

    Role-Based Security in Windows Apps
    http://www32.brinkster.com/srisamp/netArticles/article_13.htm

     

    Abraços,

    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    sábado, 20 de dezembro de 2008 20:24
    Moderador
  • Opa, obrigado Caio,

     

    Bom pelo visto o .NET tem tal solução que esta praticamente "pronta".

    Quando envie meu post estava pensando em uma solução que não tivesse vinculo algum com as credenciais do Windows, algo bem separado mesmo, onde pudesse personalizar 100% das permissões dos usuários do sistema.

    O fato é que não vou ter acesso as máquinas que serão utilizadas, ou seja não vou poder criar, usuários, grupos de usuários e etc. (Nem quero isso rsrs)

    Estou criando uma aplicação para um sindicato que controla a bilheteria de alguns cinemas e suas salas, essa aplicação vai ter um módulo que será instalado nos distribuidores, alguns distribuidores terão acesso de administrador outro não.

    Os usuários administradores terão acessos a todos os módulos do sistema, permissão de leitura, escrita e etc, já os demais usuários podem apenas tirar relatórios, aprovação publicações e etc...
    Para tal aplicação pretendo trabalhar "sem banco de dados", trabalhando apenas com webServices onde vou ter registrados todos os terminais, usuários, permissões e etc.

    Entendeu a minha necessidade? Bom gostaria de deixar claro que não estou pedindo ex. de códigos, códigos nem soluções prontas, estou à procura exatamente do tipo de informação que você me enviou, post, artigos e dicas de por onde começar.

    Valeu pela ajuda Caio,

    Abraços

    Coca

    segunda-feira, 22 de dezembro de 2008 02:57
  • Olá David,

     

     David Coca wrote:

    Quando envie meu post estava pensando em uma solução que não tivesse vinculo algum com as credenciais do Windows, algo bem separado mesmo, onde pudesse personalizar 100% das permissões dos usuários do sistema.

     

    Você pode personalizar 100% das permissões e não precisa utilizar a autenticação / autorização utilizando os usuários do Windows. A única coisa que você deve fazer é integrar, a sua forma personalizada de autenticação / autorização com o modelo de segurança que já existe no .NET.

     

    Você pode ir buscar os usuários e permissões no seu banco de dados do jeito que você quiser, mas para que o .NET saiba "entender" o seu usuário e as permissões que ele tem, você terá de fornecer um objeto de uma classe que implemente a interface IPrincipal, e outro que implemente a interface IIdentity.

     

    Os artigos que indiquei acima mostram como funciona o modelo de segurança, e é isso que você precisa entender, para depois integrar a sua solução.

     

    Abraços,
    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    sexta-feira, 26 de dezembro de 2008 12:36
    Moderador