Como implementar uma segurança com base em formulários para os aplicativos ASP . Você pode usar esse mecanismo quando sua aplicação é segurança aprimorada ou quando você permite apenas usuários autenticados (login). Também é possível usar esse mecanismo quando os usuários, como os usuários da Internet, não fazem parte de seu domínio interno. Este exemplo usa um banco de dados para armazenar as informações dos usuários e validá-los nesse mesmo banco de dados.
Abaixo as etapas necessárias para implementar a segurança com base em formulários ou a segurança personalizada em seu aplicativo ASP:
|
1. |
Apresente um formulário de login ao usuário. |
|
2. |
Valide as credenciais do usuário, comparando-as com as informações do usuário armazenadas no seu banco de dados de usuário. |
|
3. |
Crie uma variável de sessão e defina seu valor para a identificação do usuário. |
|
4. |
Para cada solicitação subseqüente feita pelo usuário, verifique se o valor dessa variável não é igual a uma seqüência de caracteres em branco (“”), para confirmar se ele fez login. |
|
5. |
Se a variável estiver em branco, o usuário não é válido ou fez logoff da sessão. Redirecione o usuário para a página de login, se a variável estiver em branco. |
|
6. |
Se o login falhar porque esse usuário não existe em seu banco de dados, talvez ele ainda não esteja registrado em seu site. Redirecione o usuário para a página Register.asp para permitir que ele se registre em seu site. Quando o usuário se registra, seus detalhes são adicionados ao banco de dados de usuário. |
|
7. |
Forneça um link para a página de logoff em todas as páginas, exceto na página de login, para permitir que o usuário faça logoff da sessão. Essa página limpa a variável de sessão que está mantendo a identificação do usuário, atribuindo a ela uma seqüência de caracteres em branco (“”). |
Crie uma tabela do banco de dados de usuário
|
CREATE TABLE [Users] ( [uid] [varchar] (25) NOT NULL , [password] [varchar] (25) NOT NULL , CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ( [uid] ) ON [PRIMARY] ) ON [PRIMARY] GO |
|
Salve como User.txt.
|
|
Aqui você precisa ter o Microsoft SQL Server , em seguida clique em Iniciar, aponte para Programas, para Microsoft SQL Server e clique em Query Analyzer. Na caixa de diálogo Conectar-se ao SQL Server, especifique o nome do servidor que está executando o SQL Server, a identificação do usuário e a senha para se conectar ao SQL Server.
|
|
No menu Arquivo, clique em Abrir. Na caixa de diálogo Abrir, clique em Todos os arquivos (*.*) na caixa Arquivos do tipo. Clique em User.txt na lista e em Abrir. |
|
Na caixa DB da barra de ferramentas, selecione o banco de dados em que você quer criar essa tabela. Se você não tiver um banco de dados específico para isso, clique em Pubs para criar essa tabela no banco de dados Pubs de exemplo. |
|
Após selecionar o banco de dados, clique em Executar no menu Consulta para executar a consulta. Isso cria uma tabela Usuários no banco de dados selecionado. |
Crie e configure o diretório virtual
|
No Windows Explorer, crie uma pasta na raiz da Web. Por padrão, a raiz da Web é Sua_unidade:\Inetpub\wwwroot. Nomeie a pasta ASPSecureAPP. |
|
|
Inicie o Console de Gerenciamento Microsoft (MMC) do Gerenciador de serviços de Internet.
|
|
|
Expanda Computador e Site padrão da Web. Clique com o botão direito do mouse na pasta ASPSecureAPP que você criou na etapa 1 e clique em Propriedades. |
|
|
Na guia Diretório na caixa de diálogo Propriedades, clique em Criar na seção Configurações do aplicativo para marcar o diretório como um aplicativo. |
Crie as páginas
Login.asp.
Esta página permite que os usuários digitem seu nome de usuário e sua senha para acessar o site.
Copie o seguinte código em um página ASP nova. Salve o arquivo Login.asp na pasta ASPSecureAPP do diretório Inetpub\Wwwroot.
<%
‘A seguir três linhas de código são usados para assegurar que esta página não está em cache no cliente.
Response.CacheControl = “no-cache”
Response.AddHeader “Pragma”, “no-cache”
Response.Expires = -1
%>
<html><body>
<form action=”Validate.asp” method=”post”>
<P>
Login ID: <INPUT type=text id=UID name=UID> <br>
Password: <input type=”password” id=”passwd” name=”passwd”>
</P>
<input type=”submit” value=”Login” id=”submit1″ name=”submit1″>
</form>
</body></html>
Validate.asp
Após o usuário fornecer suas informações de login no seu aplicativo, essa página valida as informações e redireciona o usuário para a página apropriada.
Estes parâmetros desta seqüência são:
|
• |
Identificação do usuário |
|
• |
Senha |
|
• |
Catálogo inicial |
|
• |
Fonte de dados |
Salve o arquivo Validate.asp na pasta ASPSecureAPP do diretório Inetpub\wwwroot.
<%
Response.Buffer=true
‘A seguir três linhas de código são usados para assegurar que esta página não está em cache no cliente.
Response.CacheControl = “no-cache”
Response.AddHeader “Pragma”, “no-cache”
Response.Expires = -1
Dim userid
Dim Pwd
userid= Request.Form(“UID”)
Login.asp.
if userid <> “” then
pwd = Request.Form(“passwd”)
Dim Cn
Dim Rs
Dim StrConnect
StrConnect = “Provider=SQLOLEDB.1;User ID=<username>;Password=<strong password>;Initial Catalog=pubs;” & _
“Network Library=dbmssocn;Data Source=servername”
Set Cn = Server.CreateObject(“ADODB.Connection”)
Cn.Open StrConnect
Set Rs = Server.CreateObject(“ADODB.Recordset”)
Rs.Open “Select * from Users where uid=’” & userid & “‘”,Cn
If Not Rs.EOF then
If strcomp( pwd, Rs.Fields(“password”).value , 1) = 0 then
Session(“UID”) = userid
Response.Redirect “Default.asp”
Response.End
Else
Response.Redirect “Login.asp”
Response.End
End if
Else
Register.asp page
application.
Response.Redirect “Register.asp”
Response.End
End if
Else
Response.Redirect “Login.asp”
Response.End
End if
%>
Register.asp
Esta página permite que os usuários digitem seu nome de usuário e sua senha para acessar o site.
Estes parâmetros desta seqüência são:
|
• |
Identificação do usuário |
|
• |
Senha |
|
• |
Catálogo inicial |
|
• |
Fonte de dados |
Salve o arquivo Register.asp na pasta ASPSecureAPP do diretório Inetpub\Wwwroot.
<%
Response.Buffer=true
‘A seguir três linhas de código são usados para assegurar que esta página não está em cache no cliente.
Response.CacheControl = “no-cache”
Response.AddHeader “Pragma”, “no-cache”
Response.Expires = -1
Dim pwd
Dim userid
userid = Request.Form(“uname”)
pwd = Request.Form(“pwd”)
If userid <> “” then
If pwd <> “” then
Dim Cn
Dim Rs
Dim StrConnect
‘Especifique a seqüência de conexão para acessar o banco de dados.Lembre-se de alterar os seguintes parâmetros string de conexão para refletir os valores corretos para o seu servidor SQL
StrConnect = “Provider=SQLOLEDB.1;User ID=<username>;Password=<strong password>;” & _
“Initial Catalog=pubs;Network Library=dbmssocn;Data Source=servername”
Set Cn = Server.CreateObject(“ADODB.Connection”)
Cn.Open StrConnect
Set Rs = Server.CreateObject(“ADODB.Recordset”)
Rs.Open “Select * from Users where uid=’” & userid & “‘”,Cn,3
If Rs.RecordCount>0 then
Response.Write “ O nome do usuário que você digitou já foi tomado por outra pessoa.”
Response.Write “ Utilize um Nome de usuário diferente.”
Set Rs = Nothing
Set Cn = Nothing
Else
Dim records
Cn.Execute “INSERT INTO USERS1 (uid,password) VALUES” & _
“(‘” & userid & “‘,’” & pwd & “‘)” , records
If records=1 then
Response.Write “ Você foi registrado com sucesso.”
Set Rs = Nothing
Set Cn = Nothing
Session(“UID”)= userid
Response.Redirect “Default.asp”
Response.End
Else
Response.Write Err.Description
Set Rs = Nothing
Set Cn = Nothing
Response.End
End if
End if
Else
Response.Write “ Senha está vazia. Não foi possível registrar. Tente novamente.”
End if
End if
%>
<html>
<head>
<script language=”javascript”>
function callsubmit()
{
if (frm1.pwd.value==frm1.pwdc.value) {
frm1.submit();
}
else
{
alert(“A senha não corresponde. Re-digite a senha“);
}
}
</script>
</head>
<body>
<form action=”" method=”post” id=frm1 name=frm1>
<P>
Login ID: <INPUT type=text id=uname name=uname> <br>
Password: <input type=”password” id=”pwd” name=”pwd”> <br>
Confirm Password: <input type=”password” id=”pwdc” name=”pwdc”>
</P>
<input type=”button” value=”Register” id=”submit1″ name=”submit1″ onclick=javascript:callsubmit();>
</form>
</body>
</html>
Logoff.asp
Esta página permite que os usuários façam logoff.
Salve o arquivo Logoff.asp na pasta ASPSecureAPP do diretório Inetpub\Wwwroot.
<%
Response.Buffer=True
Response.CacheControl = “no-cache”
Response.AddHeader “Pragma”, “no-cache”
Response.Expires = -1
Session(“UID”)=”"
Session.Abandon
Response.Redirect “Login.asp”
Response.End
%>
Default.asp
É possível usar esta página para testar as outras páginas que você criou.
Salve o arquivo Default.asp na pasta ASPSecureAPP do diretório Inetpub\Wwwroot.
<%
Response.CacheControl = “no-cache”
Response.AddHeader “Pragma”, “no-cache”
Response.Expires = -1
if session(“UID”)=”" then
Response.Redirect “Login.asp”
Response.End
else
Response.Write “vc esta logado como” & session(“UID”) & “<br>”
end if
%>
<HTML>
<BODY>
<A HREF=”Logoff.asp”>log off</A>
<BODY>
</HTML>
Adicione um código de validação às páginas
O seguinte código verifica se o usuário já fez login no site e ainda não fez logoff.
<%
Response.CacheControl = “no-cache”
Response.AddHeader “Pragma”, “no-cache”
Response.Expires = -1
if session(“UID”)=”" then
Response.Redirect “Login.asp”
Response.End
end if
%>
Como esse aplicativo funciona
Em termos práticos, esse aplicativo tem duas páginas (Login.asp e Register.asp) que qualquer um pode visualizar sem fornecer suas credenciais. Para visualizar as páginas restantes, um usuário deve fazer login usando uma identificação de usuário e uma senha válidas. Portanto, quando um usuário navega diretamente para qualquer página que exige informações de login, ele é redirecionado à página Login.asp. Os usuários devem fornecer uma identificação de usuário e uma senha válidas na página Login.asp. Se a senha estiver incorreta, o usuário pode fazer login novamente.
Se a identificação e a senha do usuário não existirem em seu banco de dados, o usuário é redirecionado para a página Register.asp na qual ele pode se registrar para usar o seu aplicativo. Quando o usuário se registra no seu site pela página Register.asp, seus detalhes são inseridos no banco de dados que você está usando para validar os usuários.
Últimos Comentários