Skip Navigation Links



Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de UsuĆ”rios
»CĆ©lulas AcadĆŖmicas«
intcontpiada : 118
Scaneando
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
FaƧa um pequeno teste com 10 questƵes de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programaĆ§Ć£o com nosso treinamento on-line de lĆ³gica de programaĆ§Ć£o
.:.
Veja nosso calendƔrio de treinamentos
Gostou da PƔgina?
Então

para um amigo!

Pesquisa personalizada
Pesquisar Dicas:

 






Quer saber mais?
Não deixe escapar essa oportunidade!
A Búfalo Informática tem os cursos certos para você:
::Treinamento para Asp.Net::
::Treinamento para VB.Net ::

ASP.NET FORMS Authentication


O ASP.NET, conforme mencionamos em artigos anteriores, realiza por conta própria muitas tarefas que antes tinhamos que programar manualmente.

Uma destas tarefas é o controle de login. No ASP tradicional são necessários os seguintes passos para realizar o controle de login :

1) Escolher o nome de uma variável de sessão e os valores que ela conterá (1 se o usuário estiver logado, por exemplo)
2) Criar uma página para validar o login do usuário
3) Se o login for válido, atribuir um para a variável de sessão escolhida
4) Em todas as páginas, testar o valor da variável de sessão. Se o valor for diferente de 1 redirecionar o usuário para a página de login
5) Ao redirecionar para a página de login deve transmitir a url da página que o usuário tentou acessar
6) Após o login a página de login deverá verificar se recebeu alguma url por parâmetro e, se sim, se desviar para ela, permitindo assim que o usuário chame diretamente uma página, logue-se e acesse esta página

Por exemplo, se o usuário chamar o endereço : http://site/paginatexto.asp desvia-se o usuário para o endereço http://site/login.asp?url=/paginatexto.asp

Desta forma o usuário verá a tela de login onde poderá ser validado. Após a validação a página de login poderá utilizar o parâmetro que recebeu para desviar o usuário de volta exatamente para a página que ele havia originalmente chamado.

No ASP.NET a estrutura de funcionamento continua a mesma, afinal, a web não foi mudada. O que mudou é que não precisamos nós mesmos implementar todos os passos, pois o ASP.NET realiza esses passos para nós.

Para que o ASP.NET possa realizar o processo de autenticação para nós é primeiramente devemos informar a ele que desejamos realizar esse processo de autenticação. Essa informação é dada ao ASP.NET através de um arquivo chamado web.config. Esse arquivo é escrito em formato XML e pode ser inserido em qualquer diretório da aplicação. Ele contém configurações a nível de site que serão válidas a partir do diretório em que ele se encontra e em todos os sub-diretórios. Por isso é comum que um web.config seja sempre inserido na raiz do site.

Através do web.config vamos fornecer as seguintes informações :

- Que tipo de autenticação iremos realizar, no caso, baseada em formulário. É possível também utilizar outros tipos de autenticação, tal como a autenticação integrada com o sistema operacional, normalmente utilizada em ambientes de intranet.

- Qual formulário iremos utilizar para realizar a autenticação

- Quais usuários poderão acessar as páginas. No caso utilizaremos um simbolo para indicarmos que apenas usuários autenticados poderão acessar as páginas.

- O nome da variável que será utilizada para identificar o usuário logado. Aqui valem duas observações : o ASP.NET não utiliza variáveis de sessão para isso, mas sim cookies; o nome indicado não é realmente o nome, mas um sufixo para o nome.

Com o que mencionei até agora você já deve ter percebido o que irá ocorrer : O ASP.NET controlará o processo de autenticação automaticamente. A partir do momento que configuramos o web.config para realizar a autenticação via formulário o ASP.NET passa a verificar em todos os acessos a página se o usuário está logado ou não, verificando se o cookie de autenticação existe. Se não existir ele desviará a execução para o formulário de login que houvermos informado no web.config, transmitindo via GET a página que o usuário tentou acessar. Isso nos economiza grande trabalho de desenvolvimento.

Você deve ter observado que, já que está sendo utilizado um cookie ao invés de uma variável de sessão este cookie poderia ficar gravado na máquina do usuário entre uma visita e outra. A questão é : Realmente pode, se você quiser. Existem cookies temporários e cookies permanentes, os temporários são destruidos quando o browser é fechado, os permanentes são gravados em disco. O ASP.NET permite que você determine se deseja que o cookie de autenticação seja permanente ou temporário.

Isso é util para que você possa fornecer ao usuário a opção de lembrar suas informações de login, assim quando o usuário retorna ao site o cookie de login já encontra-se lá e consequentemente ele pode acessar as páginas sem redigitar suas informações de login. Muito cômodo e, sendo apresentado como uma opção para o usuário, ele assume os riscos.

No VB.NET ao criarmos um projeto o web.config já é criado para nós, precisaremos apenas alterar algumas das tags que ele possui, veja :

<authentication mode="Forms" >
<forms name="SecureWeb" loginUrl="login.aspx" />
</authentication>


<authorization>
<deny users="?" />
</authorization>


Com o elemento authentication estamos determinando o tipo de autenticação que iremos utilizar (forms) e a url do formulário de autenticação e o nome do cookie de autenticação.

Já como o elemento authorization determinamos quais usuários podem acessar a aplicação. A ? utilizada no elemento Deny indica que deve ser negado acesso a usuário não identificados, ou seja, não logados.

O próximo passo é a montagem da tela de login. A tela de login precisará ter, além das caixas de usuário e senha, uma checkbox perguntando ao usuário se deseja gravar sua identificação em um cookie permanente para facilitar seu retorno ao site. Claro que implementar essa checkbox é opcional, mas é muito simples de fazer e é um conforto útil para o usuário.

Veja como fica a programação do botão Ok da tela de login ficaria assim :

Private Sub cmdLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLogin.Click
If txtLogin.Text = "DENNES" AndAlso txtSenha.Text = "SENHA" Then
FormsAuthentication.RedirectFromLoginPage(txtLogin.Text, chkLembrar.Checked)
End If
End Sub


Claro que nesse ponto seria feita uma busca em um banco de dados para validar o login do usuário, mas isto é apenas um exemplo da autenticação. O importante aqui é observar o funcionamento do método RedirectFromLogin page do objeto FormsAuthentication. Esse método gera o cookie identificando que o usuário encontra-se logado e redireciona o usuário para a página que ele solicitou.

Observe o 2o parâmetro, que determina se o cookie será permanente ou temporário. Neste exemplo estamos configurando este 2o parâmetro com o checked da checkbox inserida na tela de login. Desta forma o usuário pode optar por manter seu login registrado em cookie ou não. Se não tivessemos criado a checkbox na tela deveriamos utilizar false como default.

Para testar podemos criar uma ou mais páginas dentro desta aplicação e tentar chama-las diretamente. Você verá que será automaticamente desviado para a tela de login e só conseguirá fazer o acesso às demais páginas após se logar.

Caso você deseje que algumas páginas sejam acessíveis mesmo que o usuário não esteja logado pode criar um sub-diretório e criar um web.config separado para este sub-diretório, sem criar a exigência de autenticação.

Com isso, os 6 passos necessários para a montagem de uma autentiação em ASP foram reduzidos pelo ASP.NET a apenas 2 passos : A configuração do web.config e a montagem de uma tela de login.

Dennes Torres
MCSD,MCSE,MCDBA





Envie seus comentįrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentįrios nesta pįgina

Veja abaixo os comentários já enviados :

Nome : Roberto Goes E-Mail : roberto.goes@icdobrasil.com.br
Cara realmente util exelente brigado..
Nome : Leandro Ribeiro E-Mail : mib13l@ig.com.br
Muito util, e pra variar(rs) né Dennes ótima explicação.
Nome : Anderson Márcio E-Mail : amfreita@terra.com.br
Simples e direto. Muito BOM
Nome : joaquim E-Mail :
É pessoas como voce q fazem avançar a ciencia
Nome : Ebenézer E-Mail : ecurvello@bol.com.br
Muito Bom Dennes. Simples e objetivo. Eu estava tentando usar forms authentication de um outro artigo e . . . não consegui. Voltei a procurar na web e achei o seu. Funcionou !!!!!!!!!!!!!
Nome : Leonardo E-Mail : leoflap@hotmail.com
Cara...Legal mesmo...mas não tem um ai pra iniciante. Eu preciso fazer uma página de login e Senha... para entrar em outra , mas somente para as pessoas que tiverem a senha. Sem opções de Cadastro , a não ser pelo administrador.
Bom...mesmo sem conhecer nada ... eu fiz um site... entra lá...Eu preciso de ajudar...

www.somosadoradores.com.br
Me dá umas dicas também... vcs são muito bons mesmo.
Valeu cara ... FUI!
Nome : Dennes Torres E-Mail : dennes@bufaloinfo.com.br

De uma olhada no nosso CD de e-learning de ASP.NET, ele deve ajudar !

http://www.bufaloinfo.com.br/learningseries.asp

Nome : Erico E-Mail : erico@digitaldna.com.br
Valeu, achei muito bom ... no caso o SecureWeb seria oi diretório onde ficarao as pahginas protegidas?

Valeu
Duvida de iniciante

Abraços
Nome : daniel E-Mail : d.manga@terra.com.br
mais uma vez uma explicação simples e objetiva.. dennes vcs nao tem a opção de pagar com cartao de credito os cds de treinamento? deveriam colocar algo assim.
Nome : Dalmiro E-Mail : dalmiro@ig.com.br
Ola Denis, gostaria de tirar uma dúvida.
A forma de acesso ao meu sistema esta como a que vc exemplifica aqui.
A unica diferenca é que os furmulario estão em uma subpasta chamado formulario. Na minha maquina funciona normalmente, mas de outra maquina o usuário não sai da pagina de login. Dai fiz o teste colocando as paginas de login e principal na raiz dai funciona. Vc sabe me dizer pq e como resolver o problema para poder usar de dentro da subpasta ?
Outro problema que tenho é que quando dou logout mesmo na minha maquina e tento logar da erro que não encontrou a pagina default, pq isso ?

t+
Nome : Carla Casagrande E-Mail : carla_divanir@yahoo.com.br
Muito bem explicado. Parabens.
Nome : Alesandro E-Mail : Select * From Brasil
Beleza cara, eu também estava tentando usar este baguio em outros artigos, mas não havia conseguido, mas neste ficou filé. Thanks.
Nome : Felipe E-Mail : jhfg@kj.com.br
Esta linha:
FormsAuthentication. RedirectFromLoginPage(txtLogin.Text, chkLembrar.Checked)
Fica dando erro, tem que importar alguma coisa?
Valeu
Nome : Felipe E-Mail : jhfg@kj.com.br
Esta linha:
FormsAuthentication. RedirectFromLoginPage(txtLogin.Text, chkLembrar.Checked)
Fica dando erro, tem que importar alguma coisa?
Valeu
Nome : Felipe E-Mail : kg@kjyh.com.br
Achei o problema, na página onde tem o código:
FormsAuthentication.RedirectFromLoginPage(txtLogin.Text, False)

Deve-se importar "System.Web.Security":
Imports System.Web.Security
Nome : gaeiuaeguiea E-Mail : aehoeiahea
eahoiaeheiaoheai
Nome : E-Mail :
Nome : E-Mail :
alô
Nome : E-Mail :
Nome : Erivelton Kohl E-Mail : ejkohl@hotmail.com
Bom dia! Gostaria de saber se vc's tem algum exemplo onde mostre como autenticar e-mail enviados pelo VB sempre da um erro 553!!
Desde já Agradeço.
Atenciosamente:
Erivelton Kohl
Nome : Cliver E-Mail : cliver@bol.com.br
Cara achei muito interessante. Mas lhe peço o seguinte e nem sei se é possivel.
Aqui em minha casa rodo um servidor linux com autenticação no servidor proxy.
A merda é que tenho que configurar nas estaões o ip e porta do servidor proxy.
Não tem como criar uma pag. onde eu coloco o user e senha e ele enviar para o endereço 192.168.0.1 porta 3128.
Agradeço-lhe desde já.
Nome : E-Mail :
ddvdvdvzvzvzd
Nome : E-Mail :
usa o vnc
Nome : E-Mail :
'
Nome : Caue E-Mail : samuel@caue.com
Que loucura.
Nome : Luiz Gastao E-Mail : gztoverflow@yahoo.com.br
Simplesmente um excelente tutorial!!
valeu mesmo!
Nome : Manuel Santos E-Mail :
Explicar o antes e o depois é bastante util a todos os visitantes...
deixo os meus parabéns e que continuem assim durante muito muito tempo :)

abraço
"Para quem trabalha muito tem de se divertir ainda mais"
Nome : Otoniel E-Mail : otoniel.isidoro@gmail.com
Ola muito bom este artigo me ajudou muito...mas esta acontecendo o seguinte quando usei o caracter ? no web.config na página de login não esta aparecendo as imagens que estão num diretorio img....concluí que ele esta negando o acesso mesmo na página de login...como resolvo isso?
Nome : Otoniel E-Mail : otoniel.isidoro@gmail.com
Ola muito bom este artigo me ajudou muito...mas esta acontecendo o seguinte quando usei o caracter ? no web.config na página de login não esta aparecendo as imagens que estão num diretorio img....concluí que ele esta negando o acesso mesmo na página de login...como resolvo isso?
Nome : Gerson E-Mail : 007spyker@gmail.com
Olá Dennis, parabens pelo tutorial. Sigo esses passos para realizar a autenticação, porem existe um problema. Quando eu faço logout sou redirecionado para pagina de login. Na pagina de login quando eu clico no botao voltar do navegador, eu volto para pagina que eu estava antes mesmo estando teoricamente deslogado. Pelo que vi aqui isso se deve ao fato da minha pagina estar em cache. O que eu fiz:
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="Cache-control" CONTENT="no-store">

Porem isso so funciona quando eu clico uma vez no botao voltar do IE7, se eu clicar mais uma vez eu vou para uma pagina do sistema... Dennis como resolver este problema??? Mais uma vez parabens pelo tutorial!
Nome : Admin.aluno E-Mail : codinomeadmin@hotmail.com
Muito util para iniciantes e nao tão iniciantes tb valeu pela info brother!!
Talvez ficaria melhor a Sub cmdLogin_Click em uma function.FLw
Nome : Silvia E-Mail : silsilka@superig.com.br
Bom dia,
Numa busca sobre o vnc encontrei vcs....
Gostaria de saber uma coisinha sobre o vnc.
Ele grava o login e senha dos meus e-mails?
Ou se eu tiver dentro do meu e-mail lendo uma mensagem recebida, o outro pc interligado ao meu pelo vnc tem acesso? Ele pode ler o meu e-mail em tempo real, ou fica gravado no pc dele?
Obrigada.
Nome : E-Mail :
Nome : Robert de Azevedo E-Mail : robertg2@bol.com.br
Parabéns ótimo artigo, muito útil!
Nome : E-Mail :
Nome : E-Mail :
-1'
Nome : -1' E-Mail :
Nome : E-Mail :
Nome : E-Mail :
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : ZnfjrQnMB7V E-Mail : y92gnjo38@yahoo.com
That is pretty sipmle. Create a database and a form that submits a name and email address to that database then create another form that you fill in with a title and message that will form the email. Then connect to the database, create a loop that grabs a persons name and email then sends an email to them then moves on to the next entry. You can even type variables like $name into the message to give a more personal touch. He has stuff on how to do all of this on his channel.
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : E-Mail :
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 0HK8WaCst E-Mail : yg65md61ohh@yahoo.com
Well, they must like it otherwise why would someone have in their back yard a dog that barks non-stop literally for hours until it is let back in the house? Maybe th2r8&#ee17;s something I don&#8217;t understand about dog-owners.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Conheça mais sobre o nosso site :

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Quer saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e
Prepare-se para o Mercado!
Veja o que a Búfalo tem para você.

ļæ½ BĆŗfalo InformĆ”tica, Treinamento e Consultoria - Rua Ɓlvaro Alvim, 37 Sala 920 - CinelĆ¢ndia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br