none
Como identificar um usuário logado em uma ASP C# para não deixar o acesso com o mesmo login em outras maquinas simultaneamente RRS feed

  • Pergunta

  • Olá Pessoal.

    Meu problema é o seguinte, tenho uma aplicação que usa Web Forms em Asp e linguagem C#. Existe a validação de masterpage por sessão normal que só deixa o usuário acessar através da página login.aspx. Até aí tudo bem, o que eu preciso e travar o acesso de um usuário a apenas uma máquina, ou seja, bloquear o acesso do mesmo usuário em outra máquina.

    Não tenho a mínima ideia de como fazer isso.

    Minha tela de login funciona da seguinte forma, o usuário entra com os dados, se estiverem de acordo com o BD ele autoriza o acesso e coloca os dados do usuário na sessão, dessa forma ele carrega na sessão os dados o tempo todo desde que faz login.

    Andei pesquisando e achei uns gringos falando de "asp identity" mas são informações que faltam dados :(

    Abraço pessoal, quem poder me ajude :)

    quarta-feira, 22 de novembro de 2017 21:14

Respostas

  • Caro Péricles Salmazzi,

    Suponho que você esteja utilizando Form Authentication do ASP .NET.

    Para verificar se o usuário está logado, você precisa usar o trecho de código abaixo:

    bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated

    E dentro do seus parâmetros você pode criar um meio para salvar qual é a sessão do usário, (se interligado com o banco de dados, consegue trabalhar de forma mais gerenciável).

      public class sessionLog
      {
         public int UserID { get;set;}
         public string Guid {get;set;}
         // ... Pode customizar e adicionar o ip também.
      }

    Com essas informações é mais fácil de forçar o logout usando: 

    FormsAuthentication.SetAuthCookie(...);


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 23 de novembro de 2017 19:29
  • Péricles

    Você pode gerar também uma session com o id do usuário.

    Marque no banco de dados que ele está logado.

    Se o usuário tentar logar com IP diferente do que está logado ou se no status estiver logado, então você fala que já tem uma pessoa logada e não pode logar mais. 

    Deixa isso registrado sempre.

    Você pode gravar um monte de controle para saber se o usuário mandou o login e senha dele para outra pessoa. Número de IP, número do mac address, número do HD e muito mais.


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    sexta-feira, 24 de novembro de 2017 22:25

Todas as Respostas

  • Crie uma tabela onde conterá o nome da máquina ou mac address e relacione o id do usuário 

    Quando o usuário se logar  consulte o banco passando como id o nome da máquina ou o mac address.

    quinta-feira, 23 de novembro de 2017 01:46
  • Caro Péricles Salmazzi,

    Suponho que você esteja utilizando Form Authentication do ASP .NET.

    Para verificar se o usuário está logado, você precisa usar o trecho de código abaixo:

    bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated

    E dentro do seus parâmetros você pode criar um meio para salvar qual é a sessão do usário, (se interligado com o banco de dados, consegue trabalhar de forma mais gerenciável).

      public class sessionLog
      {
         public int UserID { get;set;}
         public string Guid {get;set;}
         // ... Pode customizar e adicionar o ip também.
      }

    Com essas informações é mais fácil de forçar o logout usando: 

    FormsAuthentication.SetAuthCookie(...);


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 23 de novembro de 2017 19:29
  • Péricles

    Você pode gerar também uma session com o id do usuário.

    Marque no banco de dados que ele está logado.

    Se o usuário tentar logar com IP diferente do que está logado ou se no status estiver logado, então você fala que já tem uma pessoa logada e não pode logar mais. 

    Deixa isso registrado sempre.

    Você pode gravar um monte de controle para saber se o usuário mandou o login e senha dele para outra pessoa. Número de IP, número do mac address, número do HD e muito mais.


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    sexta-feira, 24 de novembro de 2017 22:25
  • Bom dia,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 27 de novembro de 2017 12:09
    Moderador