Aula07 Forms Authentication

Documentos relacionados
Login. Criar uma pasta Repositories na raiz do projeto. Criar uma classe Funcoes.cs dentro da pasta Repositories.

Aplicação MVC com Class Library

Criação de uma aplicação Web ASP.NET MVC 4

Laboratório 3 Controllers

PROJETOS EXEMPLO DE ASP.NET MVC

Bem vindos ao Curso de ASP.NET MVC 3 Razor e C#

Aplicação Web Zend Framework 2 Cliente de Aplicação Asp.Net Web API

Aplicação MVC + Entity + MySQL

Login. Criar um novo website File > New > WebSite Framework 4.5 Visual C# ASP.NET Empty Web Site Nome do projeto: WebLogin

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 4 PROF. EMILIO PARMEGIANI

Criação de uma aplicação Web ASP.NET MVC usando Code First

Criação de uma aplicação Web ASP.NET MVC5 usando Code First

Aplicação ASP.NET MVC Cliente de Aplicação Web API

Tutorial de Aplicação Simples usando Web Forms e MySQL. Luiz Eduardo Guarino de Vasconcelos

HERANÇA NO BANCO DE DADOS COM ENTITY FRAMEWORK RESUMO

Publicar uma aplicação ASP.NET Core com base de dados SqlServer no Azure usando Visual Studio e um perfil para publicação (publish profile)

Resumo Aplicação MVC Contoso University

Consulta de endereço através do Cep

LAB 7 Cookies e Sessões em PHP

Aplicação ASP.NET MVC Cliente de Aplicação Web API (com Class Library)

INTRODUÇÃO AO DESENVOLVIMENTO FRONT-END COM HTML, CSS E JAVASCRIPT

Aula 06 Usando controles em ASP.NET

Todos os direitos reservados e protegidos pela Lei nº9.610, de 10/02/1998.

Histórico de Revisões

Programação para web HTML: Formulários

1. Base de Dados criada automaticamente pelo Entity Framework. 2. Correspondência entre classes da aplicação Asp.Net e tabelas da base de dados

PRDS C#.Net Alexandre L. Silva

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

Construindo Aplicações com ASP.NET MVC 2.0 Aula 03 Luiz Alberto Ferreira Gomes. Ciência da Computação da PUC Minas

ACESSO AO BANCO DE DADOS PARTE 2 ALTERAÇÃO, EXCLUSÃO E INCLUSÃO DE REGISTROS

Programação para Dispositivos Móveis

Vamos falar de Hibernate?

05 Como utilizar POO no ambiente gráfico do C#?

Adicionando a classe de Mapeamento Faça o download do arquivo Descompacte-o

Selecione o WPF Application dentro de Templates > Visual C# > Windows

curso de ASP.NET MVC

Linguagem de Programação II Implementação

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016.

Google Chart. Adicionando Action No PublicoController, adicionar o trecho. Adicionar View Botão direito na Action acima, Add View.

Linguagem de Programação II Importando Classes/Pacotes

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

Simulado de Linguagem de Programação Java

PHP e MySQL Autenticação de Usuários

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

INSTALAÇÃO DO PROCESSOR BI 6.0

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

O JasperReports Studio é uma ferramenta de software que oferece um ambiente visual para criar relatórios para a plataforma Java. É open source.

Click the + sign to add new server details. Clique no sinal de "+" para adicionar novos detalhes do servidor. Enter a friendly name for your BI Server

Osvaldo Santana Thiago Galesi

GUIA PHP com MYSQL Autor: Everton Mendes Messias

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2

Exercício de Estrutura de dados. Java Fila

Repeater no GASweb. Regiões

HTML BÁSICO E TEMPLATE VIEW. Gabrielle Amorim Porto

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

Exercícios de fixação: Listas

Para efetuar a configuração de s no painel, acesse o cpanel a partir do link abaixo:

POO Programação Orientada a Objetos

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

Notas sobre Aplicação MVC Contoso University: Parte 4. Uso de Atributos para controlar Formatação, Validação e Mapeamento na Base de Dados

Orientação a Objetos - Herança

JAVA. Professor: Bruno Toledo

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

JavaFX Classe de Controle e Eventos. Prof. Vicente Paulo de Camargo

Orientação a Objetos - Programação em C++

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

Transcrição:

Aula07 Forms Authentication Disciplina: Programação Web Prof. Allbert Velleniche de Aquino Almeida E-mail: allbert.almeida@fatec.sp.gov.br Site: http://www.allbert.com.br /allbert.almeida

Objetivo O objetivo dessa aula é construir uma aplicação autenticando usuários com diferentes níveis de acesso usando Forms Authentication;

Criando uma nova aplicação Vamos abrir o Visual Studio; File >> New >> Project >> Aplicativo Web; Tipo de aplicação MVC; Change Authentication >> No Authentication

Exemplo de uma aplicação

Modelo Usuario Id Nome Email Senha UsuarioPerfil Id UsuarioId PerfilId Perfil Id Descricao

Criar uma classe Usuario public class Usuario { [Key] public int Id { get; set; } [MaxLength(255)] public string Nome { get; set; } [MaxLength(100)] [EmailAddress] public string Email { get; set; } [Required] [DataType(DataType.Password)] public string Senha { get; set; } [Required] [DataType(DataType.Password)] [Compare("Senha")] public string ConfirmaSenha { get; set; } }

Criar uma classe Perfil public class Perfil { public int Id { get; set; } [Required] [DisplayName("Descrição")] [MaxLength(255)] public string Descricao { get; set; } }

Criar uma classe UsuarioPerfil public class UsuarioPerfil { public int Id { get; set; } [DisplayName("Usuário")] public int UsuarioId { get; set; } [DisplayName("Perfil")] public int PerfilId { get; set; } public virtual Usuario Usuario { get; set; } public virtual Perfil Perfil { get; set; } }

Criar uma classe Contexto public class Contexto:DbContext { public Contexto() : base(nameorconnectionstring: "StringConexao") { } public DbSet<Usuario> Usuario { get; set; } public DbSet<Perfil> Perfil { get; set; } public DbSet<UsuarioPerfil> UsuarioPerfil{ get; set; } }

Adicionar 2 pacotes para solução EntityFramework MySql Data Entity 6.9.11

Adicionar a String de Conexão no WebConfig <connectionstrings> <add name="stringconexao" providername="mysql.data.mysqlclient" connectionstring="server=localhost;dat abase=teste;uid=root;pwd='root'" /> </connectionstrings>

Compilar a solução Compilar a solução para que os modelos sejam validados e seja possível criar o CRUD da classe Usuario; Perfil; UsuarioPerfil

Adicionar Controller

Adicionar Controller

Executar a solução Na URL entre com o caminho da aplicação + /Perfils/ Na URL entre com o caminho da aplicação + /Usuarios/ Cadastrar perfil e usuário;

Forms Authentication Adicionar no system.web do web.config: <authentication mode="forms"> <forms loginurl="~/home/login" timeout="2880" /> </authentication>

HomeController Vamos adicionar na HomeController a action Login; [HttpPost] public ActionResult Login(string email, string senha, string ReturnUrl) { Usuario usu = db.usuario.where(t => t.email == email && t.senha == senha).tolist().firstordefault(); if (usu!= null) { string permissoes=""; foreach(usuarioperfil p in usu.usuarioperfil) permissoes += p.perfil.descricao + ","; permissoes = permissoes.substring(0, permissoes.length - 1); FormsAuthentication.SetAuthCookie(usu.Nome, false); FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, usu.email, DateTime.Now, DateTime.Now.AddMinutes(30), false, permissoes); string hash = FormsAuthentication.Encrypt(ticket); HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash); if (ticket.ispersistent) cookie.expires = ticket.expiration; Response.Cookies.Add(cookie); if (String.IsNullOrEmpty(ReturnUrl)) return RedirectToAction("Index", "Perfils"); else { var decodedurl = Server.UrlDecode(ReturnUrl); if (Url.IsLocalUrl(decodedUrl)) return Redirect(decodedUrl); else return RedirectToAction("Index", "Perfils"); } } else { ModelState.AddModelError("","Usuário/Senha inválidos"); return View(); } }

View Login.cshtml Vamos adicionar a view login; @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-group rx-form-group"> <div class="col-md-12 col-sm-12 form-group"> <i class="fa fa-envelope select"></i> <input type="email" placeholder="e-mail" required="required" class="formcontrol" id="email" value="" name="email"><br /> </div> <div class="col-md-12 col-sm-12 form-group"> <i class="fa fa-unlock-alt"></i> <input type="password" placeholder="senha" required="required" class="form-control" id="senha" value="" name="senha"><br /> </div> </div> <div class="col-md-12 col-xs-12 form-group"> <button class="btn btn-default" type="submit">acessar</button> </div> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) }

Adicionar autorização Na PerfilController vamos adicionar autorização. Somente usuários autorizados terão acesso a esse controller; Importante a autorização pode ser definida no controller inteiro ou somente nas actions; [Authorize]

Compilar a solução novamente Compilar a solução novamente e verificar se conseguem acessar perfil;

Validar o Perfil Já vimos que somente usuários autorizados podem entrar na página, agora vamos ver como controlar o perfil;

Global.asax Vamos adicionar o método; protected void Application_PostAuthenticateRequest(Object sender, EventArgs e) { var authcookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName]; if (authcookie!= null) { FormsAuthenticationTicket authticket = FormsAuthentication.Decrypt(authCookie.Value); if (authticket!= null &&!authticket.expired) { var roles = authticket.userdata.split(','); HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(new FormsIdentity(authTicket), roles); } } }

Adicionar perfil na autorização Na PerfilController vamos adicionar autorização. Somente usuários autorizados com roles definido terão acesso a esse controller; Importante a autorização pode ser definida no controller inteiro ou somente nas actions; [Authorize(Roles = "Admin")]

Compilar a solução novamente Compilar a solução novamente e verificar se conseguem acessar perfil;