Usuário com melhor resposta
Como pegar um usuário via GetUser

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.
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)- Sugerido como Resposta Marcus Paulo Couto sexta-feira, 12 de novembro de 2010 18:49
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 6 de janeiro de 2011 11:53
-
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;
Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli- Sugerido como Resposta Marcus Paulo Couto terça-feira, 30 de novembro de 2010 17:49
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 6 de janeiro de 2011 11:53
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)- Sugerido como Resposta Marcus Paulo Couto sexta-feira, 12 de novembro de 2010 18:49
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 6 de janeiro de 2011 11:53
-
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;
Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli- Sugerido como Resposta Marcus Paulo Couto terça-feira, 30 de novembro de 2010 17:49
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 6 de janeiro de 2011 11:53
-
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