none
Como pegar um usuário via GetUser RRS feed

  • Pergunta

  • Eu tenho dois forms o Form1 e um de FormLogin. Eu queria saber como eu faço para pegar o username do usuário logado e apresentar no Form1. me falaram que da para fazer usando GetUser() mais eu não estou conseguindo.

    desde já agradeço pelas respostas postadas.

    att.

    sexta-feira, 12 de novembro de 2010 10:38

Respostas

  • Lucas,

    Isto depende de como você está controlando a sua autenticação, o mais indicado no .NET é usar o Principal para controlar se o usuário está autenticado, você pode também utilizar a autenticação integrada com o windows através do WindowsPrincipal.

    Para isto, no seu login você cria o seu Principal e guarda o usuário:

      private void PerformLogin(string login)
      {
       // cria o identity...
       GenericIdentity identity = new GenericIdentity(login);
       // cria o principal e passa o identity...
       GenericPrincipal principal = new GenericPrincipal(identity, null);
       // seta o CurrentPrincipal...
       Thread.CurrentPrincipal = principal;
      }
    
    

    Depois para saber o usuário logado, você pega do principal:

      private string GetLoggedUser()
      {
       // verifica se foi autenticado...
       if (Thread.CurrentPrincipal is GenericPrincipal)
       {
        // pega o principal...
        GenericPrincipal principal = (GenericPrincipal)Thread.CurrentPrincipal;
        // pega o identity...
        if(principal.Identity is GenericIdentity)
         return ((GenericIdentity)principal.Identity).Name;
       }
       return null;
      }
    

    Mais:

    http://msdn.microsoft.com/en-us/library/system.security.principal.genericprincipal.aspx

    http://msdn.microsoft.com/en-us/library/system.security.principal.genericidentity.aspx

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    sexta-feira, 12 de novembro de 2010 11:29
    Moderador
  • O Rogério está correto, lembrando que se for o caso de querer integrar sua autenticacação com a autenticação do Windows, não precisa criar um GenericPrincipal ou GenericIdentity para Obter estas informações, você pode por exemplo usar o metodo GetCurrent da classe WindowsIdentity para obter informações do usuário:

    using System.Security.Principal;
    
    //Obtém informações do usuário corrente autenticado no Windows
    WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent();
    bool estaAutenticado = currentIdentity.IsAuthenticated;
    string nomeUsuario = currentIdentity.Name;
    string tipoAutenticacao = currentIdentity.AuthenticationType;
    
    Espero ter ajudado
    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    sexta-feira, 12 de novembro de 2010 18:56

Todas as Respostas

  • Lucas,

    Isto depende de como você está controlando a sua autenticação, o mais indicado no .NET é usar o Principal para controlar se o usuário está autenticado, você pode também utilizar a autenticação integrada com o windows através do WindowsPrincipal.

    Para isto, no seu login você cria o seu Principal e guarda o usuário:

      private void PerformLogin(string login)
      {
       // cria o identity...
       GenericIdentity identity = new GenericIdentity(login);
       // cria o principal e passa o identity...
       GenericPrincipal principal = new GenericPrincipal(identity, null);
       // seta o CurrentPrincipal...
       Thread.CurrentPrincipal = principal;
      }
    
    

    Depois para saber o usuário logado, você pega do principal:

      private string GetLoggedUser()
      {
       // verifica se foi autenticado...
       if (Thread.CurrentPrincipal is GenericPrincipal)
       {
        // pega o principal...
        GenericPrincipal principal = (GenericPrincipal)Thread.CurrentPrincipal;
        // pega o identity...
        if(principal.Identity is GenericIdentity)
         return ((GenericIdentity)principal.Identity).Name;
       }
       return null;
      }
    

    Mais:

    http://msdn.microsoft.com/en-us/library/system.security.principal.genericprincipal.aspx

    http://msdn.microsoft.com/en-us/library/system.security.principal.genericidentity.aspx

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    sexta-feira, 12 de novembro de 2010 11:29
    Moderador
  • O Rogério está correto, lembrando que se for o caso de querer integrar sua autenticacação com a autenticação do Windows, não precisa criar um GenericPrincipal ou GenericIdentity para Obter estas informações, você pode por exemplo usar o metodo GetCurrent da classe WindowsIdentity para obter informações do usuário:

    using System.Security.Principal;
    
    //Obtém informações do usuário corrente autenticado no Windows
    WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent();
    bool estaAutenticado = currentIdentity.IsAuthenticated;
    string nomeUsuario = currentIdentity.Name;
    string tipoAutenticacao = currentIdentity.AuthenticationType;
    
    Espero ter ajudado
    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    sexta-feira, 12 de novembro de 2010 18:56
  • Olá,

    Caso seu problema tenha sido resolvido, favor marcar como resposta os posts que lhe ajudaram a resolver o problema, pois isto facilita aos demais usuários do forúm a encontrarem as informações procuradas.

    Obrigado


    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    terça-feira, 30 de novembro de 2010 17:50