Pular para o conteúdo principal

Login de acesso utilizando arquivo XML


Depois de muito tempo sem postar nada, hoje vou demonstrar como utilizar um arquivo XML para validar login de usuário.
Para começar vamos criando um  simples arquivo xml com a seguinte estrutura abaixo:

<?xml version="1.0" encoding="utf-8" ?>
<dados>
    <acesso>
        <usuario>administrador</usuario>
        <senha>123</senha>
    </acesso>
</dados>


Para criar o arquivo xml clique com botão direito em cima do nome do projeto -> Add -> New Item, selecione a opção Data na lista a esquerda e escolha o item XML File.
Feito isso, com o arquivo xml criado, adicione um Web Form ao projeto renomeie para Acesso.aspx e o deixe conforme abaixo:

    <form id="form1" runat="server">
    <div>
        <center>
            Usuario:<asp:TextBox ID="txtLogin" runat="server"></asp:TextBox>
            Senha:<asp:TextBox ID="txtPassword" runat="server"></asp:TextBox></br></br>
            <asp:LinkButton ID="btnAcesso" runat="server">Validar Acesso</asp:LinkButton>
        </center>
    </div>
    </form>


Com a estrutura feita, vamos para a codificação, primeiro vamos criar uma classe que ira retornar verdade/false (Booleana) baseada no parametros de usuario e senha que enviaremos.
Veja na classe abaixo que ela recebe dois parametros e retorna um Boolean.

Não esquece de importar a classe using System.Xml para utilizar objeto XML.

        private string sMensagemRetorno = string.Empty; //variavel criada para receber as mensagens de erro de acesso ou except do TRY/CATCH

        private Boolean ValidarAcesso(string _login, string _password)
        {
            Boolean acessoLiberado = false;
            try
            {
                string sCaminhoDoArquivo = HttpContext.Current.Server.MapPath("~/xmlLogin.xml"); //Caminho e Nome do arquivo
                XmlDocument xmlDoc = new XmlDocument(); //Criando um obejto XML
                xmlDoc.Load(sCaminhoDoArquivo); //Carrego o arquivo para o objeto XML
                XmlNodeList xnList = xmlDoc.GetElementsByTagName("acesso");//Pegando elemento pelo nome da TAG
                foreach (XmlNode xn in xnList) //Fazer um ForEach lendo os elementos do XML
                {
                    if (_login == xn["usuario"].InnerText && _password == xn["senha"].InnerText) //Verifica se o Login e Senha passados conferem com os dados do XML
                    {
                        acessoLiberado = true; //A variavel acessoLiberado só receberá TRUE se forem encontrados usuario e senha passados, senão valor continuará FALSE
                    }
                }
                if (acessoLiberado == false)
                {
                    sMensagemRetorno = "Usuário ou Senha inválido!"; //Seta a variavel com a mensagem de Usuário ou Senha inválidos.
                }

            }
            catch (Exception ex)
            {
                sMensagemRetorno = "Erro: " + ex.Message.ToString(); //Seta a variavel com a mensagem de exceção gerada pelo sistema.
                acessoLiberado = false;
            }
            return acessoLiberado;
        }


Com a classe e objetos criados, falta apenas programar o evento do LinkButton com o código abaixo:
        protected void btnAcesso_Click(object sender, EventArgs e)
        {
            if (ValidarAcesso(txtLogin.Text, txtPassword.Text)) // Verifica se o retorno é TRUE ou FALSE
            {
                Response.Write("Acesso liberado!!!!!!"); //Se o retorno for TRUE informamos que dados fornecidos estão corretos
            }
            else
            {
                Response.Write(sMensagemRetorno); //Se for FALSE é porque ocorreu alguma exceção ou os dados fornecidos estão incorretos
            }


Pronto, agora é só rodar o projeto e testar.
Abraços e até a próximo!

Comentários

Postagens mais visitadas deste blog

PREPARE-SE PARA O PROTOCOLO IPV6

PREPARE-SE PARA O PROTOCOLO IPV6. Olá amigos, estava eu navegando a alguns dias atras, quando me deparei com uma noticia sobre o termino do estoque de IP's , então lembrei de outra noticia q tinha lido na Internet sobre um novo tipo de protocolo IP, que seria o IPV6, mas na época não dei muita importância, claro q como sou de T.I. e sempre que sai algo novo nessa área, como qualquer outro profissional dela, acabei lendo para saber do que se tratava, pois é, acho que assim como eu, vocês que também trabalham na área hoje deveriam procurar saber mais informações sobre o assunto, afinal de contas, depois da noticia de termino do estoque de IP, só nos resta saber como usar esse novo tipo de IP.

RECUPERANDO VALOR DO TEXTBOX NO DETAILSVIEW

Hoje vou postar uma dica que talvez seja util para em algumas situações no visual web developer, vou ensinar como recuperar/resgatar um valor de um TextBox dentro de um DetailsView .