Primeiras aulas do curso ASP.NET Core Parte 3: Identity

ASP.NET Core Parte 3: Identity

Instalando ASPNET Core Identity - Introdução

Eu sou Marcelo Oliveira, sejam bem-vindos ao curso ASP.NET Core parte 3: Indentity, aqui da Alura.

Nesse curso nós vamos pegar o projeto final da parte 2, onde nós tínhamos lá uma aplicação de comércio eletrônico da Casa do Código, porém essa aplicação não tinha nenhum controle de autenticação, autorização dos nossos usuários, e vamos começar a implantar nessa parte 3 essas funcionalidades, através do ASP.NET Core Identity.

Nós vamos começar aprendendo o processo de Scaffolding. Esse processo vai configurar o ASP.NET Core Identity e também vai trazer para o nosso projeto algumas páginas que fazem parte do Identity, como, por exemplo, a página de login, logout e nova conta de usuário.

Nós vamos aprender que esse processo de Scaffolding vai criar no nosso projeto uma nova pasta chamada “Areas”. Lá dentro vão ficar armazenados arquivos contendo as páginas do Identity e também um novo modelo de dados contendo informações sobre os nossos usuários.

E esse modelo precisa ser persistido no banco de dados, primeiro precisamos ter um banco de dados de usuário. Para isso vamos fazer um processo de migração com o Entity Framework.

Depois nós vamos aprender a integrar os componentes do Identity no back-end da nossa aplicação e depois disso também no front-end da aplicação, onde nós vamos aprender sobre as views parciais. Vamos aprender o que é uma view parcial e vamos utilizar uma view parcial para gerar os links de novo cadastro e também do botão entrar, para poder integrar o nosso site com o Identity.

E depois vamos aprender sobre as Razor Pages, que são as páginas Razor, que é como são construídas as páginas do ASP.NET Core Identity. Então diferente do MVC, cada Razor Page tem uma estrutura diferente, tem elementos diferentes.

E vamos aprender, lá na página de novo cadastro, mais de perto, como funciona uma Razor Page. Vamos ver quais são os seus componentes e vamos aprender também a customizar essa página de novo cadastro, traduzindo para o português não só o texto da página, mas também as mensagens de erro de validação.

Depois vamos aprender a proteger algumas áreas da nossa aplicação contra acesso anônimo, exigindo que para fazer algumas atividades os nossos usuários precisem fazer primeiro uma autenticação.

Depois vamos aprender como funciona o fluxo de autenticação e autorização do Identity e vamos aprender também a obter informações do usuário como, por exemplo, o e-mail, através da classe UserManager do Identity.

Vamos aprender também a estender a classe base do Identity através de uma customização e também vamos aprender a ler e gravar informações do usuário do banco de dados do Identity.

Depois vamos começar a integrar a nossa aplicação com o Identity criando lá na tabela de pedidos uma nova propriedade para armazenar o ID do cliente, e esse ID de cliente vai vir lá do banco de dados do Identity e vamos então pegar essa informação e gravar na tabela de pedido.

Depois, lá no final do curso, vamos aprender a permitir que os nossos usuários possam fazer um login externo através de provedores externos, e com isso nós não obrigamos mais os nossos usuários a criarem um e-mail e senha na nossa aplicação, porque eles vão se autenticar fora e depois voltar para usar o nosso programa de comércio eletrônico.

E para isso é necessário configuração, então vamos começar primeiro configurando o provedor de acesso externo Microsoft, para que o nosso usuário possa entrar com uma conta Outlook ou Hotmail, por exemplo, e depois, lá no finalzinho, vamos aprender a fazer a mesma configuração, só que utilizando uma conta do Google. Então o nosso usuário que tem uma conta do Gmail vai poder se autenticar, voltar e usar o nosso programa. Então é isso, espero que vocês gostem desse curso. Muito obrigado e até logo.

Instalando ASPNET Core Identity - Por Que Identity

Lá no final da parte 2 do curso ASP.NET Core nós tínhamos uma aplicação de comércio eletrônico, onde o usuário começava navegando pela página de produtos.

Lá no catálogo ele escolhia um ou mais produtos que eram adicionados ao seu carrinho e na página de carrinho ele podia fechar o seu carrinho concluindo a compra, indo para a página de cadastro, onde ele preenchia todas as suas informações para o fechamento do pedido.

Então nós tínhamos esse processo onde o usuário podia navegar por todas as páginas de modo anônimo, ou seja, sem informar a sua identidade. E o que vamos ver nesse curso é como fazer com que o usuário entre em algumas páginas da nossa aplicação utilizando um e-mail e senha para se identificar.

Algumas aplicações de comércio eletrônico no mercado não exigem uma identificação com e-mail e senha. Isso é bom para o cliente, porque fica menos burocrático o processo de compra. Por outro lado, se você exige o e-mail e a senha, você pode ter um controle maior sobre a navegação do seu usuário e fornecer, por exemplo, um relatório de últimas compras e outras conveniências.

Nesse curso nós vamos apresentar a forma de aplicar a identidade do usuário. Como nós podemos ver aqui, nós vamos implementar um controle de cadastro de usuário, onde o usuário vai se registrar no sistema, clicando em “Novo Cadastro”, ele vai navegar para a página de nova conta, onde ele vai digitar os seus dados para se identificar, que são o e-mail e a senha. E depois ele vai poder navegar para algumas páginas que vão ser protegidas pelo processo de autorização.

Depois que ele já tiver sido registrado, ele vai poder entrar normalmente aqui na página de login para poder acessar as páginas protegidas da nossa aplicação de comércio eletrônico.

E depois que o nosso usuário já tiver concluído a sua operação no site, ele pode simplesmente clicar no botão “Sair”, porque assim ele vai garantir que nenhuma pessoa vai acessar utilizando a sua conta.

Para fazer essas mudanças no nosso projeto nós vamos utilizar o ASP.NET Core Identity, que é uma biblioteca que fornece essas funcionalidades novas para a nossa aplicação de comércio eletrônico.

Instalando ASPNET Core Identity - Instalação do Ambiente e Melhorias

Para gravar a parte 3 desse curso ASP.NET Core nós vamos utilizar como interface de desenvolvimento o Visual Studio Community, que é uma ferramenta gratuita que pode ser baixada do site da Microsoft. O site é “visualstudio.microsoft.com”.

O link que nós estamos mostrando aqui vai ficar disponível na primeira tarefa desse curso, como atividade para você clicar e acessar facilmente esse link. Então se você não tem o Visual Studio, você pode instalar o Community ou qualquer versão superior, como o Visual Studio Professional ou Enterprise.

Além disso, você também vai precisar de um pacote de desenvolvimento que é necessário para você criar aplicações com o ASP.NET Core, que é o pacote .NET Core SDK. Esse SDK, que é um kit de desenvolvimento, pode ser obtido a partir do site “dotnet.microsoft.com/download”. Novamente, esse link vai ficar disponível na primeira atividade, o tutorial de instalação desse curso.

E você vai encontrar nessa página da Microsoft alguns links. Você vai olhar que no lado esquerdo você tem a parte referente ao .NET Core e do lado direito .NET Framework. Nós vamos utilizar .NET Core, então vamos escolher do lado esquerdo aqui, entre esses botões.

E olha só, tem um segundo botão aqui, que é o “Download .NET Core SDK”. Se você estiver utilizando uma versão do Visual Studio diferente do 2017, você vai clicar nesse botão. Se a sua versão é Visual Studio 2017, você vai clicar nesse botão para adquirir o SDK referente a essa versão do Visual Studio.

Nós terminamos o curso ASP.NET Core parte 2, nesse curso aqui nós trabalhamos com uma aplicação de comércio eletrônico para a Casa do Código. E nessa parte 2 nós vimos como trabalhar com fazer chamadas Ajax, modificar quantidade de itens no carrinho e também trabalhamos com um formulário de cadastro, com informações pessoais do nosso cliente.

E agora, na parte 3, nós vamos trabalhar com o Identity, que é uma biblioteca que permite que você crie um serviço de autenticação e autorização e identificação do seu usuário, dentro dessa aplicação de comércio eletrônico.

Nós vamos abrir aqui o Visual Studio para mostrar o que foi feito entre a versão da parte 2, do curso que nós já terminamos, e esse curso novo. Existem algumas melhorias que nós aplicamos para deixar o código com mais qualidade, para que você tenha uma aplicação melhor antes de começar essa parte 3 do curso.

E para começar eu quero mostrar para você, olha só, aqui temos um ícone de notificações do Visual Studio, que é essa bandeirinha. Através dessa bandeirinha você vai verificar se tem alguma atualização de versão pendente para você fazer. Se ela estiver com uma cor amarela quer dizer que você não atualizou a sua versão do Visual Studio.

E você vai clicar aqui, vai abrir essa janela do lado direito, você vai selecionar a notificação indicando que tem uma atualização pendente, você vai clicar, vai atualizar e você vai poder rodar esse projeto inicial que nós disponibilizamos como uma atividade de download. Se você não atualizar o Visual Studio, pode ser que você não consiga rodar esse programa.

Entre as melhorias que fizemos aqui no código, o código que veio lá da parte 2, entre elas estão aqui a utilização de métodos assíncronos. Eu estou mostrando aqui um exemplo de método assíncrono.

O método assíncrono é utilizado para evitar que uma aplicação faça o bloqueio da [THREAD]. Numa aplicação web, por exemplo, se você vai gravar uma informação no banco de dados e você não trabalha com um método assíncrono, o que vai acontecer? A [THREAD] da aplicação vai ficar estacionada enquanto o processo de gravação do banco de dados não retornou.

Isso acontece também com o acesso a arquivos, acesso à web. Então enquanto essas atividades não retornam um resultado, toda a [THREAD] da aplicação fica bloqueada. O método assíncrono serve para desbloquear, serve para que a aplicação consiga fluir e consiga fazer o que chamamos de [MULTITASK]. [MULTITASK] é fazer coisas úteis enquanto você está esperando alguma atividade, como gravação do banco de dados ou acesso a arquivos.

Nós vamos mostrar ao longo do curso diversos métodos que agora já estão com a sua versão assíncrona, como, por exemplo, o método de gravação de produtos, que agora quando nós acessamos o contexto para gravar no banco de dados, nós tínhamos lá antigamente o método SaveChanges, agora nós trocamos para “SaveChangesAsync”. E fizemos isso com todos os métodos que acessam banco, arquivos e web.

Se você quiser saber mais sobre assincronismo você pode acessar o curso da Alura, do Guilherme Matheus, que é o curso de paralelismo no mundo real, onde ele explica, utilizando o código C#, como você aplicar os conceitos de await e async para você tornar a sua aplicação [MULTITASK].

Voltando aqui, outra melhoria é com relação a view, foi criada uma nova view no MVC que é destinada a fazer a busca de produtos. Essa view pode ser mostrada aqui, vou mostrar para você, que temos um formulariozinho aqui na página de produtos, do catálogo, que é para a busca de produtos.

Temos aqui um campo de busca, onde você pode procurar a categoria ou produto, e você digita, por exemplo, “java” e você vai fazer a busca, e automaticamente vão vir somente os livros da Casa do Código que têm no título, na descrição ou na categoria a palavra que eu digitei, que é java. Como nós podemos ver aqui, somente os livros referentes à Java ou JavaScript, já que essa palavra também tem Java no começo.

Continuando, nós também agora temos um modelo, o nosso modelo de dados foi atualizado para incluir uma nova entidade chamada Categoria. Antes, na parte 2, a categoria era simplesmente um campo texto, era uma string lá na tabela de produto. E aqui a categoria foi elevada a outro nível, ela foi colocada agora como uma entidade própria.

E essa Categoria, além de ter uma nova classe chamada Categoria, ela também foi incluída como propriedade da classe de Produto. A classe Produto agora também tem uma propriedade chamada Categoria.

Nós podemos ver no nosso diagrama que a categoria está herdando, nós temos uma hierarquia de classes onde a categoria herda da classe base, do modelo, que é o “BaseModel”, que nós já vimos na parte 2, e também temos outras entidades que estão herdando da BaseModel, temos “Cadastro”, “Categoria”, “ItemPedido”, “Pedido” e também o “Produto”.

Outra melhoria é que o arquivo de modelo, o arquivo modelo.cs foi quebrado em vários arquivos. Algumas pessoas questionaram isso no fórum ou então nos depoimentos, “por que o modelo está num arquivo só?”. Então para melhorar essa visualização das entidades, nós quebramos esse arquivo em várias classes diferentes, como podemos ver aqui, na estrutura do nosso projeto.

Outra melhoria é que os repositórios foram simplificados. Nós tínhamos muito repositório que não era necessário, por exemplo, eu tinha um repositório de pedidos, mas eu também tinha o item “PedidoRepository”. Eu tinha, por exemplo, o “ProdutoRepository” e aqui o “CadastroRepository”. Nós tínhamos outros tipos de repositórios aqui, que eram desnecessários para a nossa aplicação.

Por exemplo, no caso do “PedidoRepository”, nós juntamos o ItemPedidoRepository e o PedidoRepository em um arquivo só. Com isso nós simplificamos o código da aplicação.

Outra coisa que fizemos também foi atualizar o projeto MVC, aqui foi atualizado para .NET Core 2.2. Podemos ver isso aqui nas propriedades do projeto. Como nós podemos ver, o framework que está sendo o alvo dessa compilação agora é o .NET Core 2.2 e é por isso que nós pedimos no começo do vídeo para você instalar o SDK do 2.2, senão você não vai conseguir rodar essa aplicação inicial.

E outra melhoria também foi que nessa página de cadastro aqui, vamos ver, quando nós adicionamos no carrinho e depois que temos o carrinho já fechado com os itens que já decidimos comprar, vamos preencher o cadastro. E nesse preenchimento de cadastro é necessário preencher uma série de campos, para depois chegar na página de resumo do pedido.

E esse processo as vezes é meio tedioso, então para evitar esse preenchimento excessivo de campos do cadastro, nós criamos alguns métodos para gravar e para obter dados do cadastro a partir da seção do ASP.NET Core. Essa é a mesma seção que é utilizada lá na parte 2 para gravar o ID do pedido, para manter o ID do pedido na memória enquanto vamos navegando.

Nós disponibilizamos esses métodos na classe “HttpHelper”. Essa classe contém agora os novos métodos, que são o “GetCadastro” e o “SetCadastro”, que vão gravar e obter os dados do cadastro do usuário.

Então é isso. A partir de agora nós vamos começar a instalar o ASP.NET Core Identity e vamos ver os benefícios dessa tecnologia.

Sobre o curso ASP.NET Core Parte 3: Identity

O curso ASP.NET Core Parte 3: Identity possui 260 minutos de vídeos, em um total de 59 atividades. Gostou? Conheça nossos outros cursos de .NET em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda .NET acessando integralmente esse e outros cursos, comece hoje!

  • 1271 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1271 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1271 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1271 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas