quinta-feira, 11 de abril de 2019

Asp.Net - Desenvolvendo um teclado numérico randômico – Parte 1



Este mês irei explorar um assunto que com certeza irá ser útil para programadores que necessitam incorporar autenticação via teclado numérico em seus sistemas. Para isto, desenvolverei um teclado numérico randômico, idêntico ao que possuímos em sites de bancos, portais específicos, ou seja, para tipos de aplicações que exigem um grau maior de segurança. Na primeira parte deste artigo explorarei apenas a interface gráfica, com todos os detalhes necessários. O exemplo será desenvolvido utilizando a tecnologia Asp.Net com a linguagem C# utilizando como ferramenta de desenvolvimento o Microsoft Visual Studio. Para realçar o visual do mesmo implementarei algumas classes do bootstrap em conjunto com o JQuery.

Bootstrap e JQuery

Não explorarei detalhes na instalação e configuração destas tecnologias, pois são assuntos que já foram citados em nossa revista. Para isto irei recomendar a leitura de dois artigos, sendo o primeiro denominado “Bootstrap - Pontapé inicial na utilização do Framework pelo Visual Studio” podendo ser encontrado no mês de Fevereiro de 2015 e ser acessado pelo link:

http://www.theclub.com.br/Restrito/Revistas/201502/boot1502.aspx
O segundo sobre JQuery entitulado como “Asp.Net – Trabalhando com JQuery 2.x” do mês de Julho de 2015, encontrado no link:

http://www.theclub.com.br/Restrito/Revistas/201507/aspn1507.aspx

(Importante lembrar que apesar deste último artigo estar explorando uma versão superior do JQuery, podemos facilmente seguir os mesmos passos descritos no artigo trocando pela versão 1.x.)
Após baixar estes arquivos, deveremos possuir uma pasta chamada “bootstrap” com o conteúdo idêntico ao da Figura 01.

Figura 01: Pasta Bootstrap.
 

E dentro da pasta “js” obrigatoriamente os arquivos de scripts necessários para o bom funcionamento do exemplo.
Ver Imagem 02.
Figura 02: Pasta “js”.


Criando o exemplo

Abra o Visual Studio e crie uma solução do tipo “Web Site ... “ com o nome que desejar. Esta Solution deverá conter por padrão o arquivo “Web.config”, um WebForm (onde irá conter o nosso teclado) e a pasta Bootstrap supracitada. Ver Imagem 03.
Figura 03: Solution.

Sugiro renomear o arquivo “aspx” para “FrmTeclado” e primeiramente adicionar o componente “ScriptManager” situado na Toolbox “AJAX Extensions”, componente de uso obrigatório e responsável por habilitar as funcionalidades do AJAX na página. Deveremos adicionar uma “Table” e dentro da mesma os botões numéricos, Limpar e OK, os TextBoxes CPF e Senha. O Layout deverá ficar idêntico ao da figura 04.

Figura 04: Layout proposto.


Abaixo a codificação comentada:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmTeclado.aspx.cs" Inherits="FrmTeclado" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
<link href= "bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" />
</head>

Dentro da TAG Head deveremos adicionar o código necessário para o funcionamento das funções BootStrap.

<body>
    <script src= "bootstrap/js/jquery-1.11.3.min.js"></script>
    <script src= "bootstrap/js/bootstrap.min.js"></script>
    <form id="form1" runat="server">
    <div>   
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
     </
div>

Deveremos adicionar na TAG Body os dois arquivos de scripts: JQuery e Bootstrap. Preferencialmente o componente “Scriptmanager” deverá estar contido dentro de uma DIV, conforme código acima.

<div id="tecladoLogin" style="PADDING-LEFT: 0px">
   <div>
<table class="well" style="MARGIN: 30px 0px 30px 45px; width: 29%;" cellSpacing="2" cellPadding="0" border="0" align="center">
      <tr style="HEIGHT: 100px; TEXT-ALIGN: center">
      <td style="TEXT-ALIGN: center">
       <div class="teclas">
<table style="TEXT-ALIGN: center; height: 89px; width: 55%;" cellSpacing="0" cellPadding="0" align="center" border="0">
        <tr>
          <td width="50%"><a href=""></a>
<asp:Button Class="btn btn-navbar" ID="btn01" runat="server" Text="0 - 1" OnClick="btn01_Click" Font-Bold="False" Font-Size="Medium" Height="30px" />
           </td>
          <td width="50%">
<asp:Button Class="btn" ID="btn02" runat="server" Text="2 - 3" OnClick="btn02_Click" Font-Size="Medium" Height="30px" />
           </td>
        </tr>
        <tr>
          <td width="50%">
<asp:Button Class="btn" ID="btn03" runat="server" Text="4 - 5" OnClick="btn03_Click" Font-Size="Medium" Height="30px" /></td>
            <td width="50%">
<asp:Button Class="btn" ID="btn04" runat="server" Text="6 - 7" OnClick="btn04_Click" Font-Size="Medium" Height="30px" />
           </td>
        </tr>
        <tr>
          <td width="50%">
<asp:Button Class="btn" ID="btn05" runat="server" Text="8 - 9" OnClick="btn05_Click" Font-Size="Medium" Height="30px" />
           </td>
          <td width="50%">
<asp:Button Class="btn btn-danger" ID="btnLimpar" runat="server"    Text="Limpar" OnClick="btnLimpar_Click" Height="30px" />
           </td>
        </tr>
      </table>
     </div>
   </td>

A minha sugestão seria trabalhar com o conjunto de componentes, Div, Table e dentro das colunas deveremos adicionar os botões numéricos (0 ao 9) e o Limpar. Utilizei algumas classes do bootstrap para enfeitar os botões do teclado, como por exemplo a “btn”, “btn btn-danger”. Na “Table” principal utilizamos a classe “well” para um fundo bonito.

</tr>
     <tr>
      <td>
<table style="FONT-WEIGHT: 600; width: 97%;" cellSpacing="0"    cellPadding="0" border="0">
          <tr style="HEIGHT: 30px">
            <td align="right" width="25%">CPF:&nbsp;</td>
            <td align="left" width="75%">
<asp:TextBox ID="txtCpf" runat="server"Width="200px"></asp:TextBox>
              </td>
          </tr>
        </table>
      </td>
     </tr>
     <tr>

      <td colSpan="2">
<table style="FONT-WEIGHT: 600; width: 97%;" cellSpacing="0" cellPadding="0" border="0">
              <tr>
                <td align="right" width="25%">SENHA:&nbsp;</td>
                <td align="left" width="75%">
                  <asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtSenha" runat="server" MaxLength="6" BackColor="White" ReadOnly="True" Width="200px"></asp:TextBox>
</ContentTemplate>
                   </asp:UpdatePanel>
                   </td>
              </tr>
            </table>
           </td>
        </tr>

A autenticação será realizada pelo campo CPF e por um campo Senha. Nesta região faremos o uso de outra “table”. Importante ressaltar o componente “UpdatePanel”, utilizado para renderizar partes parciais de uma tela sem a necessidade de fazer um completo PostBack. Este comportamento será necessário para adicionar os valores numéricos randômicos ao textbox.

      <tr style="HEIGHT: 40px; TEXT-ALIGN: center">                              <td colSpan="2">
<asp:Button Class="btn btn-primary" ID="btnOk" runat="server" style="text-align: center" Text="Ok" Width="109px" OnClick="btnOk_Click" />
         </td>
      </tr>
     </table>
    </div>
   </div>
  </form>
 </body>
</html>

Para finalizar teremos um botão “Ok”, o qual irá disparar o evento “btnOk_Click”, o qual fará o trabalho de comparar os valores escolhidos no teclado.
Ao executar nosso exemplo teremos uma aparência idêntica ao da Figura 05.

Figura 05: Executando o exemplo.



Conclusões

A primeira parte deste artigo explorei todos os detalhes necessários para criar uma interface de teclado numérico randômico. Utilizei algumas classes do Bootstrap junto com comandos básicos HTML quando trabalhamos com Web Forms. No mês que vem irei finalizá-lo com toda a codificação necessária para o funcionamento do exemplo proposto.
Um grande abraço


Nenhum comentário:

Postar um comentário