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
use Acesso
CREATE TABLE [dbo].[Log_Usuarios]
(
[Logid] [int] IDENTITY(100,1)PRIMARY KEY NOT NULL,
[nome] [varchar](55) NOT NULL,
[senha][varchar](55),
[horaLogin] [datetime] NOT NULL,
[hotaLogout] [datetime] NOT NULL,
[Status] [int] NOT NULL,
[DataLogin] [datetime] NOT NULL,
[email] [varchar](55) NOT NULL
)
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')
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]
(
@usuario VarChar(50),
@password varChar(50),
@resultado int OUTPUT
)
AS
set @resultado = (SELECT count(*) FROM Log_Usuarios
WHERE nome = @usuario And senha = @password)
select case @resultado
when 1 then 1 --Login esta Correto
else
0 -- Login incorreto
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 nomeUsuario As [String], ByVal senhaUsuario As [String]) As Integer
Dim strConn = "Data Source=.\SQLEXPRESS;Initial Catalog=Acesso;Integrated Security=True"
Dim con As New SqlConnection(strConn)
Dim cmdselect As New SqlCommand()
cmdselect.CommandType = CommandType.StoredProcedure
cmdselect.CommandText = "[dbo].[spLoginv]"
cmdselect.Parameters.Add("@usuario", SqlDbType.VarChar, 50).Value = nomeUsuario
cmdselect.Parameters.Add("@password", SqlDbType.VarChar, 50).Value = senhaUsuario
cmdselect.Parameters.Add("@resultado", SqlDbType.Int, 4)
cmdselect.Parameters("@resultado").Direction = ParameterDirection.Output
cmdselect.Connection = con
Dim Retorno As Integer = 0
Try
con.Open()
cmdselect.ExecuteNonQuery()
Retorno = CInt(cmdselect.Parameters("@resultado").Value)
Catch ex As SqlException
lblaviso.Text = ex.Message
Finally
cmdselect.Dispose()
If con IsNot Nothing Then
con.Close()
End If
End Try
Return Retorno
End Function
Essa 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
Dim Resultado As Integer = 0
If txtUsuario.Text <> "" AndAlso txtSenha.Text <> "" Then
Resultado = Valida_Login(txtUsuario.Text, txtSenha.Text)
Else
lblaviso.Text = "Informe o nome e a senha corretos."
End If
If Resultado = 1 Then
lblaviso.Text = "acesso concedido"
Response.Redirect("Download.aspx")
Else
lblaviso.Text = "Login inválido"
End If
End Sub
Esse 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…




