ASP .NET Core 3.1 - Usando o Identity de cabo a rabo - I
Hoje vamos iniciar uma série de artigos onde vou mostrar como usar o ASP .NET Core Identiy na versão 3.1 da ASP .NET .Core e do EF Core. |
|
Antes da chegada do .NET 5.0, quando provavelmente, haverá outras mudanças, vamos iniciar esta série de artigos mostrando como usar o Identity na ASP .NET Core.
Será uma série bem enxuta e objetiva onde vou procurar me ater ao que é essencial para que você possa usar o Identity em seus projetos.
Para iniciar eu vou criar um projeto ASP .NET Core MVC com EF Core para realizar o CRUD básico usando o Scaffold e assim ter um projeto de partida.
A tiítulo de exemplo vamos criar uma aplicação ASP .NET Core MVC para gerenciar informações de funcionários, e par aisso, vamos definir uma classe Funcionario que será o nosso modelo de domínio; vamos usar também uma enumeração Departamento para criar os departamentos onde os funcionários estão lotados.
Tudo bem simples, pois o objetivo é focar no Identity.
recursos usados:
Criando o projeto inicial no VS 2019
Abra o VS 2019 Community e crie um novo projeto via menu File-> New Project;
Selecione o template ASP .NET Core Web Application, e, Informe o nome da solução IdentityTotal e o nome do projeto FuncionariosWeb.
A seguir selecione .NET Core e ASP .NET Core 3.1 e marque o template Web Application e as configurações conforme figura abaixo:
Observe que não vamos definir agora a autenticação em nosso projeto vamos fazer isso depois.
Depois que o projeto foi criado, precisamos adicionar a referência aos seguintes pacotes:
Nota: Para instalar use o comando Install-Package <nome> -version 3.1.3
Esses pacotes são necessários para realizarmos o acesso ao banco de dados SQL Server e aplicarmos o Migrations ao modelo de domínio e assim gerar o banco de dados e as tabelas.
Definindo o modelo de domínio
Na pasta Models do projeto crie a classe Funcionario e a enumeração Departamento:
using System.ComponentModel.DataAnnotations;
namespace FuncionariosWeb.Models
{
public class Funcionario
{
public int FuncionarioId { get; set; }
[Required, MaxLength(80, ErrorMessage = "Nome não pode exceder 80 caracteres")]
public string Nome { get; set; }
[RegularExpression(@"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$",
ErrorMessage = "Email com formato inválido")]
[Required]
public string Email { get; set; }
public Departamento? Departamento { get; set; }
}
}
|
Enumeração Departamento:
namespace FuncionariosWeb.Models
{
public enum Departamento
{
TI,
RH,
Contabilidade,
Marketing,
Vendas
}
}
|
Criando o contexto e registrando como um serviço e aplicando o Migrations
Agora crie uma pasta Context no projeto e nesta pasta crie o arquivo AppDbContext:
using FuncionariosWeb.Models;
using Microsoft.EntityFrameworkCore;
namespace FuncionariosWeb.Context
{
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options)
: base(options)
{ }
public DbSet<Funcionario> Funcionarios { get; set; }
}
}
|
No método ConfigureServices do arquivo Startup registre o serviço do contexto:
...
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(
options => options.
UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddControllersWithViews();
}
...
|
E no arquivo appsettings.json inclua a string de conexão com o banco de dados usando sua instância local:
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=Macoratti;Initial Catalog=FuncionariosDBWeb;Integrated Security=True"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
|
Para criar o banco de dados e a tabela com as configurações definidas abra uma janela do Package Manager Console e digite o comando:
add-migration Inicial
Isso vai gerar o script de migração na pasta Migrations que será criada no projeto. Não havendo nenhum erro então emita o comando :
update-database
Isso vai criar o banco de dados e as tabelas no SQL Server.
Nota: Para alimentar a tabela com dados você pode usar a classe de Contexto - AppDbContext e definir a sobrescrita do método OnModelCreating :
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Funcionario>().HasData(
new Funcionario
{
FuncionarioId = 1,
Nome = "Macoratti",
Departamento = Departamento.TI,
Email = "macoratti@yahoo.com"
});
}
|
Criando o controlador
Agora vamos criar o controlador para gerenciar as informações dos funcionários e fazer o CRUD.
Clique com o botão direito do mouse sobre a pasta Controllers e a seguir clique em Add->Controller;
A seguir escolha a opção MVC Controller with views, using Entity Framework e clique em Add;
Na janela a seguir informe o modelo Funcionario, o data context AppDbContext e informe o nome FuncionariosController e clique em Add:
Ao final será criado o controlador e as views.
Ajustando a view _Layout.cshtml para ter um link para exibir o acessso aos funcionários temos:
..
<div
class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse"> |
Agora é só alegria...
Executando o projeto teremos:
Pronto. Este será o nosso projeto de partida para implementar o Identity.
No próximo artigo vamos iniciar incluindo o Identity no projeto e a seguir explorar seus recursos.
Pegue o projeto completo aqui: IdentityTotal.zip (sem as referências)
Mateus 24:14
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
ASP .NET Core - Implementando a segurança com ... - Macoratti
ASP.NET Core MVC - Criando um Dashboard ... - Macoratti.net
C# - Gerando QRCode - Macoratti
ASP .NET - Gerando QRCode com a API do Google