Aula07 Forms Authentication

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

Many-to-many. Mapear no Context Na classe Context.cs, dentro do método OnModelCreating, adicionar o trecho

Aula 06 Classe Net.Mail

Aplicação MVC com Class Library

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

Login Google. Copie a SSL URL, que no meu caso é

Laboratório 3 Controllers

Login Facebook. Continuação do passo-a-passo Login Google

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

WebAPI. Comente o bloco system.data e entityframework (caso existam) no web.config

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

VALIDAÇÃO DE DADOS COM O PADRÃO MVC

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

Navegar entre páginas Necessário o uso de Intent. Intenção de ir a algum lugar, acessar outros recursos, outros apps.

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

Para o carregamento das DropDownList usar métodos:

Associação 1:1. Baseado no Diagrama de Classe a seguir, iremos criar as classes de Modelagem que compõem a Associação de Piloto com Carro.

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

Aula 08 Encapsulamento. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

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

Lists. Aproveitando o projeto WebLogin, vamos ver como implementar alguns componentes de lista (DropDownList, RadioButtonList e CheckBoxList).

PRDS C#.Net Alexandre L. Silva

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET. Prof. Emilio Parmegiani

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

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET. quarta-feira, 17 de outubro de 12

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

Tutorial sobre criação de regras de negócio para Android. Igor Rafael Santos da Silva

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?

Regras de Navegação e Templates

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

Aula 05 Estrutura de Seleção em C

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

Acentuação na Linguagem C

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

LAB 11 Programação em JavaScript, JQuery, e AJAX

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.

LAB 5 Formulários com PHP

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

LAB 11 Programação em JavaScript, JQuery, e AJAX

Simulado de Linguagem de Programação Java

//conteúdo do arquivo pacote.h

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

Java Server Faces Navegação de

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.

Ciclo de vida; Funcionamento; Requisições e Respostas.

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

ADO1. Visual Studio 2008 New Web Site: ADO1 em C:\Utilizadors\Fernando\ \ARQSI\TP6

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

MAPPED E CLASSES DE PERSISTÊNCIAS.NET

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

Meta Programming. Nelson Ferraz

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;