No MVC isso tudo mudou para que a autenticação fique ativa num controller inteiro basta que decoremos o controller com [Authorize] como mostra a imagem abaixo:
Essa decoração faz com que o framework va ate seu arquivo Web.Config que fica na raiz do projeto (lembrando que tem outro na raiz da pasta views) , verificar o modo de autenticação que será usado no projeto, temos as opções:
Forms: Você mesmo constroi um form que coleta informações do usuario e a autentica
None: todos tem acesso livre e irrestrito na aplicação
Passport: Utiliza o sistema passport da microsoft no qual basta que se tenha um email cadastrado na base da microsoft para que se tenha acesso a aplicação.
Windows: Usuarios autenticados no windows tem acesso a aplicação (por exemplo em uma rede corporativa
Em outros posts irei detalhar as outras opções, mas nesse irei falar um pouco da minha experiencoa com a opção forms.
No arquivo Web.Config da raiz da aplicação teremos um trecho de codigo parecida com:
<authentication mode="Forms"> <forms loginUrl="~/Login/Index" /> </authentication>
aqui diz que o motedo que sera usado é o forms e que a action que sera usada para a autenticação esta no controller login e na action index.
Uma coisa que me impressionou muito com esse metodo de autenticação foi que a pessoa ao tentar acessar uma url protegida, ela é encaminhada para a url de autenticação, e depois de um login bem sucedido, a mesma retorna para a pagina que tentou acessar, tudo isso com pouca programação, ja que o framework armazena a pagina que o usuario tentou acessar na variavel ReturnUrl.
Porem o macete é que num controller comum que se tem a mesma action sobrecarregada com metodos diferentes essa variavel sempre fica acessivel na action inicial do projeto como mostra a figura abaixo:
Essa variavel tem que ser corretamente tratada pois pode ser que o usuario acesse o sistema atraves de sua pagina de login, e nesse caso a variavel ficara vazia, porem ela sera mostrada na barra dew endereços do navegador (ja que ela é uma query string) porem ao se clicar em login a mesma sera ignorada gerando confusão.
Esse metodo de autenticação so funciona com o SetAuthCookie que tera o valor que sera usado para futuras validações, como mostra o trecho de codigo abaixo.
Aqui para fins de exemplo, eu coloquei uma string fixa como informação, mas podera ser colocado qualquer coisa, como o id do usuário e afins.
System.Web.Security.FormsAuthentication.SetAuthCookie("Blog do Theo Alexandre Miliani", false);
Não adianta colocar outros tipos de cookies, pois o framework so reconhece esse cookie como autenticação.
Aqui vemos que o mesmo esta no namespace "System.Web.Security".
Entre aspas está a variavel a ser checada no caso "Blog do Theo Alexandre Miliani" e depois da viirgula fica a referencia se o cookie deve ser persistente (continuar valido mesmo apos fechar o navegador) ou não e aqui esta como não.
E para "Deslogar" do sistema basta uma linha:
System.Web.Security.FormsAuthentication.SignOut();
Espero ter ajudado.
Ate a proxima!
Oi Alexandre,
ResponderExcluirSó uma dica, poste código no lugar de imagens. É melhor para quem for testar.
Abraços!
A partir do proximo ja sera feito assim...
ExcluirMuito Obrigado.