Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

raphaelfogaca

[Resolvido] Como melhorar a validação de login

Recommended Posts

Olá galera, sou novo em desenvolvimento e estou tentando desenvolver o sistema da minha monografia na época da faculdade.

Escrevi um trecho para validar usuário e senha para ter acesso a aplicação, mas acredito que usando foreach para percorrer toda a lista de usuários não seja a melhor opção.

 

Como posso melhorar essa validação? Obrigado!!

 

  private void btn_Entrar(object sender, EventArgs e)
        {
            string login = textUsuario.Text;
            string senha = textSenha.Text;       
           
            UsuarioEntity uEntity = new UsuarioEntity();
            IList<Usuario> lista = uEntity.Usuarios();
                                  
                foreach (var item in lista) { 
                if ((item.UsuarioLogin == textUsuario.Text) && (item.UsuarioSenha == textSenha.Text))
                {
                    MessageBox.Show("Seja bem vindo ao Controle de Rotas");
                    panelLogin.Visible = false;
                    button4.Visible = true;
                    button5.Visible = true;
                    break;
                } else{
                    MessageBox.Show("Usuário e/ou Senha Incorreto(s)");
                    textUsuario.Text = "";
                    textSenha.Text = "";
                    break;
                }
            }            
        }

 

     

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não precisa (não deve) percorrer toda a lista, eu vi que antes de comparar o login e senha você trouxe todos os usuários do banco, isso não é necessário, o correto é procurar apenas 1 usuário que possua o login e senha informado.

 

Nessa linha aqui: 

IList<Usuario> lista = uEntity.Usuarios();

Usuarios() é um método que você criou ou é do EntiyFramework ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, quintelab disse:

Você não precisa (não deve) percorrer toda a lista, eu vi que antes de comparar o login e senha você trouxe todos os usuários do banco, isso não é necessário, o correto é procurar apenas 1 usuário que possua o login e senha informado.

 

Nessa linha aqui: 


IList<Usuario> lista = uEntity.Usuarios();

Usuarios() é um método que você criou ou é do EntiyFramework ?

 

Usuarios() é um método que eu criei que retorna a lista de usuarios.ToList();

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideal seria criar outro método, algo como:

GetUsuario(string login, string password)

Nesse seu método você irá novamente buscar os usuários no banco porém adicionando duas condições (where)

Por exemplo:

SELECT * FROM USUARIOS WHERE PASSWORD = password (parametro que recebeu no método) AND LOGIN = login (parametro que recebeu no método)

 

Se estiver usando EntiyFramework a ideia é a mesma. Caso esse método retorne algo quer dizer que o usuário foi encontrado, caso contrário não existe o usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo!
Criei outro método para validar usuário e dentro do método faço o select para buscar somente o usuário específico.

 

Obrigado!

 

public bool ValidaUsuario(string login, string senha)
        {
            using (ControleRotasContext db = new ControleRotasContext())
            {
                var query = db.Usuarios.Where(o => o.UsuarioLogin == login && o.UsuarioSenha == senha).FirstOrDefault();
                if (query != null)
                {
                    return true;
                }
                else return false;
            }
        }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por mr22robot
      Ola caros amigos. 
      Estou com uma dúvida aqui que embora nao tenho achado ainda uma resposta, acredito que haja.
      Estou estudando a tão sonhada linguagem de programação asp.net core mvc. Linguagem essa que demorei 5 anos pra iniciar os estudos rsrs.
      Mas estou agarrado em uma situação. 
      Estou usando como base de dados nos meus estudos um banco Oracle. Que já tem algumas informações nele. Utilizei o SCAFFOLD para criar as classes e o contexto baseado no banco e tabelas existentes. 
      Porem agora na fase das consultas, estou perdido em como utilizar o IN que eu utilizo no oracle; no LINQ.
      Ex: 
      SELECT CODPROD,DESCRICAO FROM PRODUTO WHERE CODPROD IN(1,2,3,4,5,6) Como eu utilizo esse filtro com uma restrição de códigos de produtos? no caso o where codprod in(1,2,3,4,5,6) ?.
      Desde já obrigado pela ajuda.
    • Por luis0101010
      1.      Programe uma função que recebe um número inteiro e verifica se todos os dígitos deste número são iguais ou diferente e liste eles em ordens crescentes.
      Obs: Código fonte com no mínimo de 10 dígitos.
       
      Como exemplo, os números 456, −235, e 5 satisfazem esta condição, enquanto que o número 6 não.
       
      2.      Crie também a função main que recebe o valor do número digitado pelo usuário e exibe na tela uma mensagem informando se os dígitos deste número são iguais.
       
      Exemplo:
      --Exemplo 1:
      Informe um número:
      -555
      Numero informado possui todos os dígitos iguais
      --Exemplo 2:
      Informe um número:
      67
      Número informado não possui todos os dígitos iguais
    • Por Rafael Massula
      Boa noite pessoal, 
      Tenho o seguinte código em .Net que faz a comparação de uma senha que foi criptografada e salva no banco com a senha comum que o usuário conhece. O algoritmo que desenvolvi foi esse da image.png porem preciso converter essa verificação para JavaScript pela seguinte necessidade, será uma aplicação em electron e ela poderá funcionar offline então não terei como mandar a verificação para o servidor. Existe alguma possibilidade? Desde já agradeço. 

    • Por eduardodsilvaq
      Erro retornado no console do navegador: 400 bad request
      Rastreei o erro ate essa parte no arquivo admin-ajax.php mudando o valor de resposta de 0 para 1:
      if ( is_user_logged_in() ) { // If no action is registered, return a Bad Request response. if ( ! has_action( "wp_ajax_{$action}" ) ) { wp_die( '0', 400 ); } Tentei de tudo, mas infelizmente nao entendi oq realmente significa esse login e como ele funciona.
      Vi algumas pessoas tendo problema com o host, no meu caso estou usando hostinger. (Nao creio que isso e relevante mas ta ai.)
       
      Código utilizado:
       
      Javascript
      function formValidation() { event.preventDefault(); var name = document.forms["contactForm"]["name"].value; var email = document.forms["contactForm"]["email"].value; var subject = document.forms["contactForm"]["subject"].value; var message = document.forms["contactForm"]["message"].value; document.getElementById('status').innerHTML = ''; var errorMessage="<span class='error'>All fields are required.</span>"; var regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; if (name.trim() == "" ||email.trim() == "" || subject.trim() == "" || message.trim() == "") { document.getElementById('status').innerHTML = errorMessage; return false; } if (!regEx.test(email)) { var errorMessage="<span class='error'>Invalid email.</span>"; document.getElementById('status').innerHTML = errorMessage; return false; } processContactSubmit(); return true; } function processContactSubmit() { var request = new XMLHttpRequest(); request.open("POST", "/wp-admin/admin-ajax.php?action=process_contact_form"); request.onreadystatechange = function() { if(this.readyState === 4 && this.status === 200) { document.getElementById("status").innerHTML = this.responseText; } }; var myForm = document.getElementById("contactForm"); var formData = new FormData(contactForm); request.send(formData); } functions.php
      add_action('wp_ajax_nopriv_process_contact_form', 'process_contact_form'); add_action('wp_ajax_process_contact_form', 'process_contact_form'); //Retirar essa parte para error no console, no contrario ira aparecer no navegador o numero 0. function process_contact_form() { $to = "Recipient Email Address"; $subject = $_POST["subject"]; $headers = "Testing"; $message = $_POST["message"]; $attachments = ""; $sent = wp_mail($to, $subject, $message, $headers, $attachments); if (! $sent) { echo "<span class='error'>Problem in sending mail.</span>"; } else { echo "<span class='success'>Hi, thank you for the message.</span>"; } wp_die(); } Html
      <form name="contactForm" id="contactForm" method="post" onsubmit="return formValidation()" action=""> <p class="comment-form-comment"><textarea id="message" name="message" required="" placeholder="" aria-required="true"></textarea></p> <p class="comment-form-author"><label for="author">Nome: </label> <input id="name" name="name" required="" size="30" type="text" value=" " /></p> <p class="comment-form-author about"><label for="author">Assunto: </label> <input id="subject" name="subject" required="" size="40" type="text" value=" " /></p> <p class="comment-form-email"><label for="email">Email: </label> <input id="email" name="email" required="" size="30" type="text" value="" /></p> <p class="form-submit"><input id="submit" class="submit" name="email_contato" type="submit" value="Enviar" /></p> </form>&nbsp; <h3><div id="status"></div></h3>  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.