domingo, 20 de abril de 2014

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!

Nenhum comentário:

Postar um comentário