LAYERDEV

 Busca Online:

 
Seja bem vindo(a) Visitante, você não está logado deseja logar
no portal para participar de serviços e promoções ? clique aqui.


No caso de perder a senha, acesse aqui e receba por e-mail.
Deseja entrar em contato conosco, acesse aqui e mande-nos um e-mail.

Sistema de Login em ASP – Parte X

por Mauricio Junior em 1/1/2011 0

Utilizando três camadas

 

 

Olá pessoal, meu nome é Mauricio Junior. Com esse artigo gostaria de mostrar como é fácil depois da criação do componente, registrar no COM PLUS; utilizando três camadas; chamar uma função do Visual Basic 6.0 usando o ASP 3.0.

 

Nos passos anteriores mostrei como criar STORED PROCEDURE, banco de dados, Global.asa dentro do Visual Basic 6.0, classes com “functions” e muito mais. Todos os passos anteriores podem ser encontrados no site www.aspneti.com ou www.juliobattisti.com.br/tutoriais/mauricioborges. Espero que possa estar ajudando.

 

Desenvolvi três páginas básicas para logar no sistema utilizando segurança com os componentes construídos anteriormente. (Referência 10.1).

 

 

- frmLogin.asp

- frmLoginPersistir.asp

- frmPaginaPrincipal.asp

 

Referência: 10.1

 

Explicação do funcionamento de cada página.

 

 

 

 

 

frmLogin.asp

 

Essa página é responsável por mostrar os campos obrigatórios de preenchimento usuário e senha. Possui os botões de “Entrar”, “Alterar” e “Sair” dentro da tela. Digitando os valores, são enviados dados via “POST” para a página “frmLoginPersistir.asp”.

 

 

frmLoginPersistir.asp

 

Depois de enviado os dados da página “frmLogin.asp” para “frmLoginPersistir.asp”, a mesma é responsável em criar o objeto da classe “clsSegurança” do Visual Basic 6.0 criado anteriormente, passando os dados necessários para autenticação junto ao banco de dados, cujo o campo senha está criptografado.

 

 

frmPaginaPrincipal.asp

 

A página principal é apenas para mostrar todos os menus montados de acordo com as permissões do usuário. É a página principal do sistema para o acesso às funcionalidades essenciais.

 

 

Codificando páginas ASP

 

 

* frmLogin.asp (Referência 10.2)

 

 

<html>

         <head><title>..:: SISCPE ::..</title></head>

                  

         <script language="javascript">

                   function sFoco(){

                            if (document.frmLogin.txtUsuario){

                                      document.frmLogin.txtUsuario.focus();

                            }

                   }

                  

                   function sValidarLogin(){

                            if (f_eVazio(document.frmLogin.txtUsuario.value)){

                                      alert(f_Mensagem(1));

                                      document.frmLogin.txtUsuario.focus();

                                      return;

                            }

                           

                            if (f_eVazio(document.frmLogin.txtSenha.value)){

                                      alert(f_Mensagem(1));

                                      document.frmLogin.txtSenha.focus();

                                      return;

                            }

                            document.frmLogin.method = 'post';

                            document.frmLogin.action = 'frmLoginPersistir.asp';

                            document.frmLogin.submit();                    

                   }

                  

                   function sSair(){

                            window.close();            

                   }

                  

                   function s_AlterarSenha(){

                            document.frmLogin.method = 'post';

                            document.frmLogin.action = 'frmAlterarSenha.asp';

                            document.frmLogin.submit();

                   }

                  

                   function enter(codigo){

                            if (codigo == 13){

                                      sValidarLogin();

                            }

                  }

         </script>

        

         <body topmargin="0" leftmargin="0" onload="sFoco();">

                   <form name="frmLogin">

                   <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">

                            <!--#include file="../includes/barra_titulo.asp"-->                           

                            <tr align="left">

                                     <td align="center"><!-- Inicio da Página -->

                                               <table CELLSPACING="1" cellpadding="0" class="formulario" width="230px">

                                                        <tr>

                                                                  <th colspan="4">Login</th>

                                                        </tr>

                                                        <tr>

                                                                  <th width="18">01</th>

                                                                  <td>

                                                                           <b>  Usuário:</b> <br>

                                                                           <input name="txtUsuario" onkeypress="enter(event.keyCode);" value="<%=Request("txtUsuario")%>" size="25" style="HEIGHT: 17px">

                                                                  </td>

                                                                  <td rowspan="2" width="40px" valign="middle">

                                                                           <br>&nbsp;<img style="background:none" SRC="../images/login.gif" WIDTH="35" HEIGHT="33">

                                                                  </td>  

                                                        </tr>

                                                        <tr>

                                                                  <th width="18">02</th>

                                                                  <td>

                                                                           <b>Senha:</b> <br>

                                                                           <input type="password" onkeypress="enter(event.keyCode);" name="txtSenha" value="<%=Request("txtSenha")%>" size="25" style="HEIGHT: 17px">

                                                                  </td>                                                                            

                                                        </tr>

                                               </table>

                                               <table class="formulario" cellSpacing="1" cellPadding="0" width="230px">

                                                        <tr>

                                                                  <th align="middle">

                                                                           <input type="button" value="Entrar" name="btnEntrar" onclick="sValidarLogin();"> &nbsp;

                                                                           <input type="button" value="Alterar" name="btnAlterar" onclick="s_AlterarSenha();"> &nbsp;

                                                                           <input type="button" value="Sair" name="btnSair" onclick="sSair()">

                                                                  </th>

                                                        </tr>

                                               </table>

                                      </td>

                            </tr>

                   </table>                       

                   </form>

         </body>

</html>

 

Referência: 10.2

 

Explicação: (Referência 10.2)

Essa página mostra apenas a tela de login onde o usuário entra com usuário e senha para logar no sistema. Como toda página ASP, possue código javascript para tornar as funcionalidades mais dinâmicas e especiais ao usuário que está utilizando o sistema.

 

A parte em javascript está dividida em “functions”. (Referência 10.3).

 

 

<script language="javascript">

                   function sFoco(){

                            if (document.frmLogin.txtUsuario){

                                      document.frmLogin.txtUsuario.focus();

                            }

                   }

                  

                   function sValidarLogin(){

                            if (f_eVazio(document.frmLogin.txtUsuario.value)){

                                      alert(“Digite o usuário”);

                                      document.frmLogin.txtUsuario.focus();

                                     return;

                            }

                           

                            if (f_eVazio(document.frmLogin.txtSenha.value)){

                                      alert(“Digite a senha”);

                                      document.frmLogin.txtSenha.focus();

                                      return;

                            }

                            document.frmLogin.method = 'post';

                            document.frmLogin.action = 'frmLoginPersistir.asp';

                            document.frmLogin.submit();                    

                   }

                  

                   function sSair(){

                            window.close();            

                   }

                  

                   function s_AlterarSenha(){

                            document.frmLogin.method = 'post';

                            document.frmLogin.action = 'frmAlterarSenha.asp';

                            document.frmLogin.submit();

                   }

                  

                   function enter(codigo){

                            if (codigo == 13){

                                      sValidarLogin();

                            }

                   }

</script>

 

Referência: 10.3

 

Explicação Javascript.

 

Esses códigos javascript, são apenas detalhes da página, serve para validação de campo e tudo mais. Procuro explicar tudo dentro da página que não haja dúvidas.

 

A primeira function, “sFoco” colocar o foto no campo “txtUsuario” do form. A segunda function “sValidarLogin” valida os campos da tela, como usuário e senha e no final mandar os dados via POST para a página “frmLoginPersistir.asp”. A terceira function “sSair”, tem a funcionalidade de fechar a tela do brownser. A quarta function “s_AlterarSenha” submete para a página “frmAlterarSenha.asp”. A quinta e última function da página chama-se “enter”, verifica se o evento do código é igual a 13, se for, chama a function “sValidarLogin”, ou seja, se o usuário clicar ENTER, automaticamente é chamada a function para validar o form.

 

O restante de código dessa página é HTML com inputs e buttons. Todos os dados digitados serão enviados para a próxima página.

 

 

 

* frmLoginPersistir.asp (Referência 10.4)

 

 

<%

Dim oSeguranca

Dim vRetUsuarioPerfil

Dim vRetUsuario

Dim vRetPerfil

Dim iLogin

 

Dim sCoUsuario

Dim sCoSenha

 

Const USU_NO_USUARIO_LOGIN      = 0

Const USU_NO_FUNCAO_LOGIN       = 1

Const PRF_CO_PERFIL_LOGIN           = 0

Const PRF_NO_PERFIL_LOGIN           = 1

 

sCoUsuario = Request("txtUsuario")

sCoSenha = Request("txtSenha")

 

set oSeguranca = Server.CreateObject("CPESeguranca.clsSeguranca")

vRetUsuarioPerfil = oSeguranca.ValidarUsuario(sCoUsuario, sCoSenha)

 

if IsArray(vRetUsuarioPerfil) then

         vRetUsuario = vRetUsuarioPerfil(0)

         vRetPerfil = vRetUsuarioPerfil(1)

end if

 

Session("sPerfilUsuario") = ""

 

if IsArray(vRetUsuario) then

         if IsArray(vRetPerfil) then

                   session("sCodigoUsuario") = sCoUsuario

                   Session("sNomeUsuario") = vRetUsuario(USU_NO_USUARIO_LOGIN,0)

                   Session("sNomeFuncao") = vRetUsuario(USU_NO_FUNCAO_LOGIN,0)

                   Session("vRetPerfilGeral") = vRetPerfil

                   for iLogin = 0 to UBound(vRetPerfil,2)

                            Session("sPerfilUsuario") = Session("sPerfilUsuario") & vRetPerfil(PRF_CO_PERFIL_LOGIN,iLogin) & "§" & vRetPerfil(PRF_NO_PERFIL_LOGIN,iLogin) & "§§"

                   next

                   Response.Redirect("frmPaginaPrincipal.asp")

         else

                   %>

                   <script>

                            alert(f_Mensagem(13));

                            location.href = 'frmLogin.asp';

                   </script>

                   <%

         end if

end if

%>

 

Referência: 10.4

 

Explicação:

 

Dentro da página responsável pelo negócio de login, declaro algumas variáveis no início da página ASP. (Referência 10.5).

 

 

Dim oSeguranca

Dim vRetUsuarioPerfil

Dim vRetUsuario

Dim vRetPerfil

Dim iLogin

 

Dim sCoUsuario

Dim sCoSenha

 

Referência: 10.6

 

Elas serão usadas no decorrer do código.

Começam com uma letra pequena e em seguida maiúsculo, isso porque fiz um padrão para melhor entendimento. Segue os detalhes. (Referência 10.7)

 

 

o = é um objeto criado, ou seja, do tipo object.

v = é um array ou do tipo variant usado no VB 6.0

i = é do tipo inteiro

s = é do tipo string.

Referência: 10.7

 

 

 

O próximo passo foi declarar algumas constantes usadas especialmente para esta página, ou seja, é melhor usar constante do que números no decorrer da página e código. Lembre-se que as constantes declaradas são referentes ao select no banco de dados, ou seja, a posição dos campos no select criado. Por exemplo: Select campo1, campo2 from tabela. O campo1 será a constante com o valor 0, o campo2 com o valor 1 e assim por diante. (Referência 10.8)

 

 

Const USU_NO_USUARIO_LOGIN      = 0

Const USU_NO_FUNCAO_LOGIN       = 1

Const PRF_CO_PERFIL_LOGIN           = 0

Const PRF_NO_PERFIL_LOGIN           = 1

 

Referência: 10.8

 

Procuro sempre colocar as constantes com letras maiúsculas.

A linha seguinte atribui os valores enviados para as variáveis. (Referência 10.9)

 

 

sCoUsuario = Request("txtUsuario")

sCoSenha = Request("txtSenha")

 

Referência: 10.9

 

Explicação:

 

Atribui a variável sCoUsuario o valor enviado do request, o campo da página anterior chama “txtUsuario”. Fiz da mesma forma para a variável sCoSenha, o request, o campo da página chama “txtSenha”.

 

 

Acessando e chamando functions diretamente do VB. (Referência 10.10)

 

 

set oSeguranca = Server.CreateObject("CPESeguranca.clsSeguranca")

vRetUsuarioPerfil = oSeguranca.ValidarUsuario(sCoUsuario, sCoSenha)

 

Referência: 10.10

 

Explicação:

 

Antes que pense “que” código é esse. Lembre-se que em passos anteriores criei uma dll utilizando o VB 6.0 chamado “CPESeguranca” com a classe chamada “clsSeguranca”. A classe possui alguns métodos para logar no sistema utilizando stored procedure no banco de dados. Agora no ASP 3.0, irei chamá-la passando os parâmetros esperados.

 

A variável “oSeguranca” é setada com o comando “set”, atribuo o valor “Server.CreateObject(“CPESeguranca.clsSeguranca")” que serve para instanciar a dll registrada junto ao COM PLUS. Instanciando dessa forma, os métodos dessa classe estarão disponíveis a serem chamados.

 

A segunda linha, o retorno do método atribui para a variável “vRetUsuarioPerfil”. Chamo da seguinte maneira, “oSeguranca.ValidarUsuario(sCoUsuario, sCoSenha)”, ou seja, o nome da variável anterior, ponto o nome do método passando as variáveis atribuídas anteriormente com o valor do request enviado pela página anterior. Espero ter entendido essa parte, caso contrário acompanhe os passos com paciência e dedicação. A regra de negócio para validação do usuário está todo dentro do VB, com esse método é verificado se o usuário está habilitado para entrar no sistema ou não. Caso seja habilitado, voltará um array com as informações necessárias de perfil e usuário, caso contrário não voltará nada.

 

  

Verificando dados para atribuir session junto ao sistema. (Referência 10.11)

 

 

if IsArray(vRetUsuarioPerfil) then

         vRetUsuario = vRetUsuarioPerfil(0)

         vRetPerfil = vRetUsuarioPerfil(1)

end if

 

Session("sPerfilUsuario") = ""

 

if IsArray(vRetUsuario) then

         if IsArray(vRetPerfil) then

                   session("sCodigoUsuario") = sCoUsuario

                   Session("sNomeUsuario") = vRetUsuario(USU_NO_USUARIO_LOGIN,0)

                   Session("sNomeFuncao") = vRetUsuario(USU_NO_FUNCAO_LOGIN,0)

                   Session("vRetPerfilGeral") = vRetPerfil

                   for iLogin = 0 to UBound(vRetPerfil,2)

                            Session("sPerfilUsuario") = Session("sPerfilUsuario") & vRetPerfil(PRF_CO_PERFIL_LOGIN,iLogin) & "§" & vRetPerfil(PRF_NO_PERFIL_LOGIN,iLogin) & "§§"

                   next

                   Response.Redirect("frmPaginaPrincipal.asp")

         else

                   %>

                   <script>

                            alert(f_Mensagem(13));

                            location.href = 'frmLogin.asp';

                   </script>

                   <%

         end if

end if

%>

Referência: 10.11

 

Bom antes de qualquer coisa, o comando que verifica se possui algum array no ASP é IsArray. As primeiras 4 linhas de código verifico se o retorno é array para atribuir os valores a outras variáveis declaradas acima. (Referência 10.12)

 

 

if IsArray(vRetUsuarioPerfil) then

         vRetUsuario = vRetUsuarioPerfil(0)

         vRetPerfil = vRetUsuarioPerfil(1)

end if

 

Referência: 10.12

 

Em seguida zero a session usada em todo sistema, isto é, atribuo o valor igual a nada (“”). Referência 10.13

 

 

Session("sPerfilUsuario") = ""

 

Referência: 10.13

 

Todo esse código de verificação de usuário junto ao sistema dll registrado com COM PLUS serve para segurança de código. Até o momento, validamos o usuário que está tentando logar, porém ainda não foram atribuídas as sessões que serão usadas. Todo o controle será em cima de sessões atribuídas automaticamente com dados vindos do componente VB.

 

 

 

 

if IsArray(vRetUsuario) then

         if IsArray(vRetPerfil) then

                   session("sCodigoUsuario") = sCoUsuario

                   Session("sNomeUsuario") = vRetUsuario(USU_NO_USUARIO_LOGIN,0)

                   Session("sNomeFuncao") = vRetUsuario(USU_NO_FUNCAO_LOGIN,0)

                   Session("vRetPerfilGeral") = vRetPerfil

                   for iLogin = 0 to UBound(vRetPerfil,2)

                            Session("sPerfilUsuario") = Session("sPerfilUsuario") & vRetPerfil(PRF_CO_PERFIL_LOGIN,iLogin) & "§" & vRetPerfil(PRF_NO_PERFIL_LOGIN,iLogin) & "§§"

                   next

                   Response.Redirect("frmPaginaPrincipal.asp")

         else

                   %>

                   <script>

                            alert(“Usuário sem perfil cadastrado.”);

                            location.href = 'frmLogin.asp';

                   </script>

                   <%

         end if

else

         %>

                   <script>

                            alert(“Usuário ou senha inválido.”);

                            location.href = 'frmLogin.asp';

                   </script>

         <%

end if

 

Referência: 10.14

 

 

Explicação (Referência 10.14)

 

A primeira condição que faço é se a variável “vRetUsuario” é um array, ou seja, se os dados que estão atribuídos a ele, é do tipo array. Se não for do tipo array, cai na condição “else” do código. Com isso é mostrado um alerta com a mensagem: “usuário ou senha inválido” e retorna para a tela “frmLogin.asp”.

 

Se for do tipo array, faço uma outra condição que verifica se a variável “vRetPerfil”, isso porque o sistema também possui no banco de dados o perfil do usuário que está sendo logado. Caso usuário que estiver logando não tiver perfil cadastro no banco de dados, será enviada a mensagem: “Usuário sem perfil cadastrado.” e redirecionará para a página de login (“frmLogin.asp”). Sendo um array, atribuo todas as sessões usadas no sistema aos valores retornados do componente da seguinte forma. (Referência 10.15).

 

 

session("sCodigoUsuario") = sCoUsuario

Session("sNomeUsuario") = vRetUsuario(USU_NO_USUARIO_LOGIN,0)

Session("sNomeFuncao") = vRetUsuario(USU_NO_FUNCAO_LOGIN,0)

Session("vRetPerfilGeral") = vRetPerfil

 

Referência: 10.15

 

Note que alguns valores que atribuo para a session, é uma constante declarada no início do código da página. Depois de atribuir as sessions necessárias, redireciono para a página principal com o comando “response.redirect”. (Referência 10.16)

 

 

Response.Redirect("frmPaginaPrincipal.asp")

 

Referência: 10.16

 

 

 

Ilustração de todo código mostrado anteriormente.

 

Tela de login do sistema. (Referência 10.17)

 

Referência: 10.17

 

Digito usuário e senha. (Referência 10.18)

 

Referência: 10.18

 

Cliquei no botão logar e entrei no sistema. (Referência 10.19)

 

Referência: 10.19

 

Caso digite usuário ou senha inválida, é mostrada uma mensagem no brownser. (Referência 10.20)

 

 

Referência: 10.20

 

  

Bom, fico por aqui com mais um artigo. Espero ter ajudado a todos os leitores. Qualquer dúvida, favor entrar em contato pelo e-mail: mauricio@aspneti.com

 

 

 

 

Livros publicados:

 

 

Mauricio Junior

www.aspneti.com

www.ascompras.com

 

voltar   comente  subir

Download Copy





 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:


Comente (dê sua opinião):

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Conecte - Os games
Teclas de atalho - Visual Studio .NET 2005
Linha do GridView (colorindo ao passar o mouse)
Visual SourceSafe - Série 4
Sistema de Login com ASP 3.0 usando três camadas – Parte I
DataGrid Mobile
Microsoft Rolls Out Major Xbox Software Update
IsDecimal
CRIANDO MENU DINÂMICO COM C#.NET Passo 1
Vídeo - Tecla de Atalho
Prepare o Sql Server para o VS 2005
Vídeo - Microsoft Surface: The Power
Servidor Integrado - Visual Studio.NET
II Encontro - Um Sucesso!!! (em Brasília)
Evento Brasil DotNet - gratuíto
Trabalhando com o componente TabContainer
Treinamento VSTS
Chama método que está dentro do COM PLUS (COM +)
Ebook: Aprendendo Desenvolver WebServices
Gerando word com Visual Studio.NET 2005
Vídeo Sobre Atributes e String Builder com Visual Studio .NET 2005
Como utilizar CSS no VS 2003
Método SHA512
Montando Menu Dinâmico com Banco de Dados
Aplicativo iCotação Free
NDOC para versão framework 2.0
Usando ProgressBar com Visual Studio.NET 2005
Flickr para Windows 7 e Windows Phone 7
Teclas de Atalho do Visual Studio .NET 2010
Torne-se Autor de Artigos
Microsoft touch mouse
Public Interface
Trabalhando bem com o “using”
Visual Source Safe - Série 1
Abrindo o menu apenas com o clique




eCode10 Magazine 4 Edição

Baixe a sua sem pagar nada, basta apenas ter um cadastro na comunidade aspneti.com ou ser usuário do ecode10.com.



Edições anteriores
LAYERDEV

Notícias *

Notebook 3D ou 4K?

Notebook vem com tudo...

Visão do Futuro - Day of Glass 2

Futuro próximo pode chegar cedo?...

Lenovo de 14 polegadas IdeaPad

Veja o novo notebook Lenovo IdeaPad...

Windows 8 Store

Channel9 publica um vídeo da Windows Store...

Sony Vaio série Z

Novo Vaio Ultrabook? ou não Ultrabook?...

Samsung quer comprar RIM

Imagine se juntar as duas companhias...

Surface 2.0 mostrado

Novo Surface é mostrado de forma incrível...

Skype Tablet

Será que esse skype tablet pega mesmo?...

Lenovo e o seu novo Ultrabook

Ultrabook chega também pela Lenovo...




NETITC