microsoft students to business - inf.pucrs.br · porque não fazer tudo em assembler? mapeamento...

63
Microsoft Students to Business Desenvolvimento de Software – 3ª Fase

Upload: dangnhi

Post on 07-Feb-2019

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Microsoft Students to Business Desenvolvimento de Software – 3ª Fase

Page 2: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Desenvolvendo para internet parte V

Page 3: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Acesso a Dados

NET oferece alternativas de acesso aos dados de um banco de dados relacional: Biblioteca de classes ADO.NET Uma API de acesso e manipulação de “baixo nível” TableAdapters e DataSet Tipado Camada de acesso a dados fornecida por geradores de código do Visual Studio baseado no ADO.NET Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida de acesso e manipulação de alto nível

Page 4: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Acesso a Dados

Page 5: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Arquitetura em camadas

Page 6: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

OO x Relacional

Questões do modelo Relacional Trabalha-se no modelo dos dados Forte acoplamento com os elementos do modelo ER: tabelas, chaves (primária e estrangeira) Objetos apenas para “uso em memória” Como tratar a questão das chaves primárias? Como tratar a questão das chaves estrangeiras?

Page 7: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

OO x Relacional

Exemplo: modelo relacional

Editora

PK codigo

nome

Livro

PK codigo

titulo anoFK1 codEditora

Autor

PK codigo

primeiroNome ultimoNome

LivroAutor

PK,FK1 codLivroPK,FK2 codAutor

Page 8: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

OO x Relacional

Questões do modelo OO Trabalha-se em um modelo que agrega dados e operações Como representar as associações entre objetos? Como mapear hierarquias de herança? Qual o ciclo de vida de um objeto persistente?

Page 9: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Exemplo: diagrama de classes

codigonome

Editora

codigotituloano

Livro

codigoprimeiroNomeultimoNome

Autor

0..*1..1 0..*0..*

Page 10: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Exemplo: diagrama de classes

Editora

PK codigo

nome

Livro

PK codigo

titulo anoFK1 codEditora

Autor

PK codigo

primeiroNome ultimoNome

LivroAutor

PK,FK1 codLivroPK,FK2 codAutor

codigonome

Editora

codigotituloano

Livro

codigoprimeiroNomeultimoNome

Autor

0..*1..1 0..*0..*

Page 11: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

OO x Relacional

Editora

PK codigo

nome

Livro

PK codigo

titulo anoFK1 codEditora

Autor

PK codigo

primeiroNome ultimoNome

LivroAutor

PK,FK1 codLivroPK,FK2 codAutor

codigonome

Editora

codigotituloano

Livro

codigoprimeiroNomeultimoNome

Autor

0..*1..1 0..*0..*

Page 12: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Mapeamento Objeto-Relacional

Mapeamento Objeto Relacional (O/RM) Técnica que mapeia os conceitos de Objetos para Relacional e vice-versa Vantagens: Produtividade Trabalha-se sempre no mesmo paradigma (OO) Manutenção Baixo acoplamento com o modelo de dados Desempenho??? Porque não fazer tudo em assembler?

Page 13: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Mapeamento Objeto-Relacional

Idéia geral:

Classes Objetos

Estado Comportamento

Tabelas e Relacionamentos Registros Colunas DML e SQL

Page 14: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Entity Framework

Entity Framework é um O/RM que separa o modelo conceitual do físico Permite a programação OO, incluindo herança e “consulta sobre objetos” Permite a mudança do modelo físico sem alteração da lógica de negócio Modelo de memória simples, baseado em Concorrência Otimista com armazenamento em memória (isto é, sem conexão aberta) Aderente ao System.Transaction Feito para suportar múltiplos bancos de dados relacionais Mapeia Tabelas, Views e Stored Procedures

Page 15: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Entity Framework - Componentes

Entity Data Model (EDM) Descreve o modelo conceitual (Objetos!) Entity Data Provider Um provedor para o EDM Entity SQL Uma versão estendida do SQL para o EDM Object Services Adiciona rastreamento de mudanças, identidade de objetos, attach / detach LINQ to Entities Uma implementação do LINQ sobre o EDM

Page 16: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Entity Framework - Arquitetura

Entity Client – EDM, Entity SQL

Entity Framework

Runtime

Data Providers (ADO.NET patterns)

SQL Server Relational DBMS

Web Service

Mod

elin

g M

appi

ng

Brow

sing

Bind

ing

Programming Layers

Code

Gen

Reporting

Sync

Analysis

Search

Entity Services

Mapping

Query and Update

Pipelines

Transactions

Metadata Services

 Linq  to  En))es    En)ty  SQL  

Applications

SqlClient

OtherClient

Non-relational

Page 17: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Entity Framework - Abordagens

New Database

Existing Database

Centrada no Projeto Centrada no código

Database First Reverse engineer model in EF Designer Classes auto-generated from model

Model First Create model in EF Designer Generate BD from model Classes auto-generated from model

Code First Define classes and mapping in code EF Power Tools provide reverse engineer

Code First Define classes and mapping in code Database created from code Migrations apply model changes to database

Fonte: https://msdn.microsoft.com/en-us/data/jj590134

Page 18: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Entity Data Model

Conceptual

Mapping

Storage

Entity Data Model

EDM é um conjunto de modelos (especificado em arquivo XML .edmx) que define o mapeamento objeto-relacional Três modelos: Conceitual (CSDL - Conceptual Schema Definition Language) Mapeamento (MSL - Mapping Specification Language) Armazenamento (SSDL - Storage Schema Definition Language)

Page 19: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

EDM – Conceitos Principais

Conceptual

Mapping

Storage

Entity Data Model

Entidade (entity): Representa um objeto do domínio da aplicação Possui um nome único Possui uma chave de entidade Possui dados na forma de propriedades Possui propriedades de navegação (associação entre entidades) Possui chaves estrangeiras (associação entre entidades) Conjunto de entidades (entity set): Representa um contêiner lógico para entidades de um mesmo tipo (inclui tipos derivados)

Page 20: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

EDM – Conceitos Principais

Exemplo: CourseManager - Tabelas

Page 21: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

EDM – Conceitos Principais

Exemplo: CourseManager - Entidades

Page 22: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

EDM – Conceitos Principais

Propriedade (property): Define a estrutura e características dos dados de uma entidade Pode conter dados primitivos ou estuturados (definidos em tipos complexos) Possui facetas (facets) que definem restrições e comportamentos adicionais (valor padrão, se aceita null, tamanho máximo, etc) Propriedade de navegação (navigation property): Propriedade que permite a navegação entre entidades associadas Pode ser apenas unidirecional

Page 23: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

EDM – Conceitos Principais

Propriedade (property): Define a estrutura e características dos dados de uma entidade Pode conter dados primitivos ou estuturados (definidos em tipos complexos) Possui facetas (facets) que definem restrições e comportamentos adicionais (valor padrão, se aceita null, tamanho máximo, etc) Propriedade de navegação (navigation property): Propriedade que permite a navegação entre entidades associadas Pode ser apenas unidirecional

Page 24: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

EDM – Conceitos Principais

Chave de entidade (entity key): Propriedade(s) utilizada para identificar uma entidade única É de um tipo primitivo, não anulável e imutável Chave estrangeira (foreing key): Propriedade que implementa um relacionamento entre entidades

Page 25: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

EDM – Conceitos Principais

Associação (association): Representa o relacionamento binário entre entidades (inclusive autorelacionamento) Cada associação possui duas terminações, anotadas com multiplicidades Um : 1, Zero ou um : 0..1, Muitos : * Uma associação pode possui restrições de integridade referenciais Entidades associadas são acessadas via propriedades de navegação ou chaves estrangeiras Conjunto de associações (association set): Representa um contêiner lógico para associações de um mesmo tipo

Page 26: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

LINQ to Entities

Consultas - busca

var companyNameQuery = from cust in nw.Customers where cust.City == "London" select cust.CompanyName; foreach(var customer in companyNameQuery) {…}

Page 27: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Consultas

Quando um consulta é executada, algumas expressões são avaliadas no servidor e outras no cliente Nem todos operadores padrão do LINQ são suportados pelo LINQ to Entities! Veja http://msdn.microsoft.com/en-us/library/bb738550.aspx

Page 28: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Consultas

Propriedades de navegação em relacionamentos 1-1, 1-N ou N-N Necessário carregar dados relacionados: Propriedade LazyLoadingEnabled Indica se objetos relacionados serão carregados automaticamente via propriedade de navegação Dispara uma nova consulta para cada navegação Método Load Carregamento explícito quando necessário Dispara uma nova consulta para cada load Método Include Carregamento imediato Dispara uma consulta única Consulta gerada é mais complexa

Page 29: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Consultas

A consulta abaixo não irá funcionar:

var contato = (from contact in awe.Contact where contact.LastName == "Zhou" select contact).First(); foreach (var pedido in contato.SalesOrderHeader) {

Console.WriteLine(pedido.SalesOrderID); }

Coleção está vazia!

Page 30: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Consultas

Include Recebe como parâmetro um query path que especifica as entidades relacionadas que devem ser carregadas com os dados Uma única requisição é realizada ao BD

var customer = (from contact in awe.Contact .Include("SalesOrderHeader.SalesOrderDetail") where contact.LastName == "Zhou" select contact).First();

Page 31: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Consultas

Load Permite carregar explicitamente as entidades relacionadas Várias requisições são realizadas ao BD Se chamado dentro de um laço foreach, o EDM deve estar configurado com MultipleActiveResultSets=True na string de conexão

Contact customer = (from contact in awe.Contact where contact.LastName == "Zhou" select contact).First(); if (!customer.SalesOrderHeader.IsLoaded) { customer.SalesOrderHeader.Load(); }

Page 32: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Inserção

Criar um novo objeto Construtor Adicionar novos objetos sobre o modelo via métodos Add() Executar método SaveChanges()

Customer cust = new Customer(); cust.CompanyName = "SomeCompany"; cust.City = "London"; cust.CustomerID = "98128"; cust.PostalCode = "55555"; cust.Phone = "555-555-5555"; contexto.Customers.Add (cust); contexto.SaveChanges();

Page 33: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Inserção

Para inserir em um relacionamento: 1-N ou N-N utilizar Add() na coleção referenciada EntityCollection 1-1 utilizar propriedade Value na entidade referenciada EntityReference

SalesOrderDetail sod = new SalesOrderDetail(…); … order.SalesOrderDetail.Add(sod); contexto.SaveChanges();

Page 34: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Alteração

Obter um objeto do modelo Garantir que o objeto esteja sob controle do contexto Alterar o objeto Estado do objeto muda de Unchanged para Modified Executar método SaveChanges()

var cust = (from c in contexto.Customers where c.CustomerID == "ALFKI" select c).First(); cust.ContactName = "New Contact"; contexto.SaveChanges();

Page 35: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Remoção

Obter um objeto do modelo Executar método DeleteObject() Marca objeto para remoção Executar método SaveChanges() Relacionamentos também são removidos

var deleteIndivCust = from cust in contexto.Customers where cust.CustomerID == "98128" select cust; if (deleteIndivCust.Count() > 0){ contexto.Customers.Remove (deleteIndivCust.First()); contexto.SaveChanges(); }

Page 36: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Remoção

Cuidado! Regras de remoção em cascata de entidade relacionadas devem ser especificadas tanto no modelo conceitual quanto na base de dados Entity Framework somente remove entidades relacionadas se elas estiverem em memória e sob gerência do contexto

Page 37: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Laboratório 19

Page 38: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Uso do Entity Framework em uma abordagem Code First (código primeiro) Definir classes de “Modelo”, incluir propriedades para chaves e navegação Conexão ao banco de dados Uso de um contexto EF Uso de uma classe de inicialização Definição de consultas utilizando LINQ to Entities

Abordagem Code First

Page 39: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Conexão ao banco de dados

Lab - Code first

<add  name="ContatosDB"        connectionString="Data  Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Contatos.mdf;Integrated  Security=True"            providerName="System.Data.SqlClient"  />

Page 40: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Uso de um contexto EF

Lab - Code first

       public  class  ContatosDB  :  DbContext        {                public  DbSet<Contato>  Contatos  {  get;  set;  }        }

EF Context (Repository pattern)

Tabela do BD (operações de CRUD)

Page 41: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

classe de inicialização

Lab - Code first

public  class  ContatosInicializer  :  DropCreateDatabaseIfModelChanges<ContatosDB>        {                protected  override  void  Seed(ContatosDB  context)                {                        base.Seed(context);                        var  contatos  =  new  List<Contato>  {                                new  Contato  {  Nome="Huginho",  Telefone="12345678",  HorarioComercial=true  },                                new  Contato  {  ...                            };                        contatos.ForEach(c  =>  context.Contatos.Add(c));                        context.SaveChanges();                }        } //  Global.asax    à    Application_Start()      Database.SetInitializer<ContatosDB>(new  ContatosInicializer());  

Page 42: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Laboratório 20

Page 43: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Ferramenta LINQPad http://linqpad.net/ LINQ http://msdn.microsoft.com/en-us/library/bb397926.aspx PLINQ http://msdn.microsoft.com/en-us/library/dd460688.aspx ADO.NET Entity Framework http://msdn.microsoft.com/en-us/library/bb399572.aspx

Aonde Ir?

Page 44: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

MSDN http://msdn.microsoft.com Data Developer Center http://msdn.microsoft.com/data

Aonde Ir?

Page 45: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Segurança

Page 46: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Autenticação e Autorização

Autenticação refere-se ao processo de obtenção da credencial do usuário e verificação de sua validade Autorização refere-se ao processo de liberação de acesso a determinados recursos protegidos

Page 47: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Segurança

Arquitetura Os clientes se comunicam com o ASP.NET através do IIS Internet Information Services O ASP.NET fornece recursos de segurança implementados pelo .NET Framework

Page 48: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Segurança no IIS

Autenticação no IIS é uma camada prévia à autenticação no ASP.NET! Mecanismos de autenticação do IIS: Anonymous Solicitações são automaticamente autenticadas Basic Credenciais são transmitidas de forma textual simples pela rede Digest Credenciais são transformadas via hash para serem transmitidas Integrated Windows Credenciais são transformadas de modo semelhante ao login do Windows em um Active Directory

Page 49: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Segurança no IIS

Page 50: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Segurança no ASP.NET

Segurança no ASP.NET Recursos para trabalhar com Autenticação e Autorização Controles específicos API ASP.NET Identity

Page 51: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Autenticação no ASP.NET

Ao criar um novo projeto no Visual Studio deve ser selecionado o mecanismo de autenticação que será configurado

Page 52: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Autenticação no ASP.NET

Opções de configuração do projeto: No Authentication: usuários anônimos Individual User Accounts: ASP.NET Identity (http://www.asp.net/identity) Organizational Accounts: Windows Identity Foundation para usuários com contas no Azure Active Directory ou Windows Server Active Directory Windows Authentication: modulo Windows Authentication do IIS

Page 53: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Autenticação no ASP.NET

Page 54: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Autenticação no ASP.NET

É um subsistema que implementa diferentes mecanismos de autenticação Características: Oferece gerência de usuários, perfis (“profiles”) e grupos (“roles”) Extensível Suporte a Microsoft Account, Google, Facebook, Twitter, etc Suporte a programação assíncrona Baseado no OWIN - Open Web Interface for .NET (http://owin.org/) Diferentes modelos de armazenamento de dados Projeto padrão utiliza o SQL LocalDB com Entity Framework Code First Distribuição de atualizações via NuGet

Page 55: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Autenticação no ASP.NET

Versões: 1.0 – VS 2013 RTM 2.0 – VS 2013 Update 2 2.1 – VS 2013 Update 3

Page 56: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

ASP.NET Identity

Estrutura do Template de Projeto padrão no Visual Studio: Configuração: Arquivo Startup.cs: ponto de partida para a configuração do ASP.NET Identity Arquivo App_Start/Startup.Auth.cs: classe parcial (arquivo Startup.cs) com método de configuração do ASP.NET Identity Arquivo App_Start/IdentityConfig.cs: classes para configuração das opções dos elementos de autenticação

Page 57: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

ASP.NET Identity

Estrutura do Template de Projeto padrão no Visual Studio: Dados: Arquivo Models/IdentityModels.cs: Classe ApplicationUser define as informações disponíveis sobre o usuário; representa propriedades que serão armazenadas no banco de dados do ASP.NET Identity Classe ApplicationDbContext representa o a base de dados do Entity Framework Classe IdentityHelper possui métodos de utilidade geral

Page 58: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

ASP.NET Identity

Objetos básicos:

Page 59: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

ASP.NET Identity

Objetos básicos:

Page 60: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Autorização

Configuração via arquivo Web.config Marcação <authorization> dentro de <system.web> com base na identificação de usuário <allow users="..."> para permitir acesso <deny users="..."> para negar acesso com base nos grupos de usuários <allow roles="..."> para permitir acesso <deny roles="..."> para negar acesso Opções Nome do usuário/roles no domínio “*” para todos os usuários “?” para usuários anônimos

Page 61: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Autorização

Exemplo:

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

Page 62: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Componentes de Autenticação

Exemplo:

Controle Descrição

CreateUserWizard Coletar dados do usuário e criar uma nova conta

Login Controle composto para página de login

LoginStatus Fornece link de loginf ou logout em função do status do usuário

LoginView Permite filtragem de conteúdo em função do status do usuário (se autenticado ou anônimo)

PasswordRecovery Controle composto para página de recuperação de senhas perdidas

ChangePassword Controle composto para página de alteração de senha

Page 63: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações

Laboratório 21