O objetivo deste artigo é
mostrar como criar uma aplicação ASP .NET que tenha as
seguintes funcionalidades:
- Permitir o acesso
seguro a uma página de um web site realizando a
autenticação do usuário; - Exibir os arquivos
passíveis de download do site ao usuário autorizado; - Efetuar o download do
arquivo selecionado pelo usuário;
Um possível cenário para
este estudo é aquele no qual você informa uma URL a um usuário
previamente cadastrado e quando ele acessa a URL é apresentada
uma página de Login que irá verificar a autenticação do
usuário. Se o login for feito com sucesso, é apresentada uma
página com uma relação de arquivos para download, e o usuário
escolhe um arquivo e efetua o download do mesmo.
Para criar essa solução,
eu vou usar as seguintes ferramentas:
-
Visual Web Developer
2010 Express Edition(VWD); -
SQL Server 2008
Express Edition; -
SQL Server Management
Studio (SSME);
Abra o VWD 2010 Express e crie um novo web site clicando no
link New Web Site… ou no menu File
-> New Web Site;
Nota:
Você sabe qual a diferença entre criar um um New Web Site e
criar New Project?
A seguir, selecione a
linguagem Visual Basic (você pode escolher C# também),
o template ASP .NET Empty Web Site, informe o
nome acessoSeguroComDownload e clique em OK.

Como vamos criar um web site
vazio, temos que incluir uma nova página (um WebForm) no projeto
através do menu WebSite->Add New Item, selecione o template WebForm e aceite o nome padrão Default.aspx.
A Default.aspx
será usada como a página de Login do site. (eu poderia ter
dado o nome de Login.aspx a essa página.)
Vamos aproveitar e incluir
também uma outra página chamada Download.aspx da
mesma forma. Essa página será usada para exibir os arquivos
para donwload.
Vamos, então, definir nessa
página os controles para solicitar que o usuário informe o
login (nome do usuário) e a sua senha previamente cadastrada.
No menu Table->Insert
Table, inclua uma tabela com 5 linhas e 2 colunas e inclua na
página os seguintes controles:
- 2
Controles TextBox : ID=txtUsuario ; ID=txtSenha
TextMode=Password - 2
Controles Button : ID= btnLogin e ID=btnCancela - 1
Controle Label : ID=lblaviso
Conforme o leiaute abaixo:

Como já deu para perceber, o
usuário terá que informar um nome de login e a senha
previamente cadastrados. Portanto, temos que ter essas
informações persistidas em algum lugar: um arquivo xml, um
arquivo texto, um banco de dados etc.
No nosso exemplo, vou criar um
banco de dados para armazenar as informações do usuário. Para
criar o banco de dados, vou usar a ferramenta SQL Server
Management Studio Express.
Abra o SQL Server Management
Studio e clique na opção New Query
para executar as seguintes consultas:
- Criar o banco de dados Acesso :
Create DataBase Acesso - Criar a tabela Log_Usuarios
: Create TABLE [dbo].[Log_Usuarios]
Para executar as consultas,
clique no botão ! Execute;

Create DataBase Acesso<br /><br />use Acesso<br /><br />CREATE TABLE [dbo].[Log_Usuarios]<br />(<br />[Logid] [int] IDENTITY(100,1)PRIMARY KEY NOT NULL,<br />[nome] [varchar](55) NOT NULL,<br />[senha][varchar](55),<br />[horaLogin] [datetime] NOT NULL,<br />[hotaLogout] [datetime] NOT NULL,<br />[Status] [int] NOT NULL,<br />[DataLogin] [datetime] NOT NULL,<br />[email] [varchar](55) NOT NULL<br />)A seguir, vamos incluir dois
registros na tabela Log_Usuarios executando as
instruções abaixo :
- Macoratti senha numsey;
- Jessica senha 123456;
insert into dbo.Log_Usuarios values('Macoratti','numsey',GETDATE(),'02/07/2010',1,GETDATE(),'macoratti@yahoo.com')<br />insert into dbo.Log_Usuarios values('Jessica','123456',GETDATE(),'02/09/2010',1,GETDATE(),'jessica@teste.com')Ao final, nossa tabela
deverá exibir os seguintes registros:

Pronto, já temos o nosso
banco de dados Acesso e nossa tabela Log_Usuarios
prontas e com dois usuários cadastrados.
Agora vamos usar uma stored
procedure spLoginv que irá validar o login e
retornar um valor inteiro:
Create Proc [dbo].[spLoginv]<br />(<br />@usuario VarChar(50), <br />@password varChar(50),<br />@resultado int OUTPUT<br />)<br />AS<br />set @resultado = (SELECT count(*) FROM Log_Usuarios<br />WHERE nome = @usuario And senha = @password)<br />select case @resultado<br />when 1 then 1 --Login esta Correto<br />else<br />0 -- Login incorreto<br />end Nessa stored procedure estamos
contando os registros que coincidem com os valores de usuário e de senha informados na página de login e, se existir um
registro que coincida com as credencias informadas, então temos
que o login está correto; se não houver nenhum registro que
coincida com as credenciais informadas, será retornado o valor
zero.
Na figura abaixo, temos a
criação da stored procedure no SQL Server Management
Studio:

Agora temos que criar uma
função que vai usar a stored procedure spLoginv
chamando-a no evento Click do botão Login
verificando o retorno obtido e tratando o resultado.
Abra o arquivo code-behind
do arquivo Default.aspx.vb vamos definir a
função Valida_Login cujo código é o
seguinte:
Public Function Valida_Login(ByVal <strong>nomeUsuario</strong> As [String], ByVal <strong>senhaUsuario</strong> As [String]) As Integer<br /><br /> Dim strConn = <strong>"Data Source=.\SQLEXPRESS;Initial Catalog=Acesso;Integrated Security=True"</strong><br /><br /> Dim con As New SqlConnection(strConn)<br /> Dim cmdselect As New SqlCommand()<br /><br /><strong> cmdselect.CommandType = CommandType.StoredProcedure</strong><br /><strong>cmdselect.CommandText = "[dbo].[spLoginv]"</strong><br /><br /> cmdselect.Parameters.Add("@usuario", SqlDbType.VarChar, 50).Value = nomeUsuario<br /> cmdselect.Parameters.Add("@password", SqlDbType.VarChar, 50).Value = senhaUsuario<br /> cmdselect.Parameters.Add("@resultado", SqlDbType.Int, 4)<br /> cmdselect.Parameters("@resultado").Direction = ParameterDirection.Output<br /> cmdselect.Connection = con<br /><br /> Dim Retorno As Integer = 0<br /> Try<br /> con.Open()<br /> cmdselect.ExecuteNonQuery()<br /> Retorno = CInt(cmdselect.Parameters("@resultado").Value)<br /> Catch ex As SqlException<br /> lblaviso.Text = ex.Message<br /> Finally<br /> cmdselect.Dispose()<br /> If con IsNot Nothing Then<br /> con.Close()<br /> End If<br /> End Try<br /> Return Retorno<br /> End FunctionEssa função define a string e
a conexão com o banco de dados (seria melhor que ela fosse
obtida do arquivo web.config, não é mesmo???).
A seguir a função define a stored
procedure que vai usar, spLoginv, e, os
parâmetros recebidos: nomeUsuario e senhaUsuario.
A função executa a stored
procedure e retorna o valor retornado pelo resultado da
execução: zero ou um.
Não se esqueça de definir no início do
arquivo os namespaces para acessar as classes ADO .NET.
- Imports System.Data
- Imports System.Data.SqlClient
No evento Click do
botão Login vamos incluir o código que vai
usar a função Valida_Login:
Protected Sub btnLogin_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLogin.Click<br /><br /> Dim Resultado As Integer = 0<br /><br /> If txtUsuario.Text <> "" AndAlso txtSenha.Text <> "" Then<br /> Resultado = <strong>Valida_Login(txtUsuario.Text, txtSenha.Text)</strong><br /> Else<br /> lblaviso.Text = "Informe o nome e a senha corretos."<br /> End If<br /><strong>If Resultado = 1 Then</strong><br /> lblaviso.Text = "acesso concedido"<br /><strong> Response.Redirect("Download.aspx")</strong><br /> Else<br /> lblaviso.Text = "Login inválido"<br /> End If<br /> End SubEsse código utiliza a função Valida_Login()
passando o nome e senha do usuário e obtendo o
retorno da stored procedure que criamos.
Se o resultado for igual a 1, então
o usuário é valido e estamos redirecionando-o para a página
Download.aspx que criamos no início do artigo.
Executando a aplicação temos
abaixo a página Default.aspx solicitando o nome
e a senha do usuário.

Dessa forma criamos o banco de
dados, a stored procedure e a página de login. Na segunda parte
deste artigo, na próxima semana, vamos exibir na página de download os arquivos para
download e definir o código para realizar o download do arquivo
selecionado.
Eu sei, é apenas ASP .NET,
mas eu gosto.
Simples, simples assim…








