Cooperchip - Medical Management / Sys


Implementação do Asp.Net Identity do Zero!

Uma das coisas mais irritantes para as pessoas que procuram tutoriais sobre Asp.Net é a falta que elas sentem de ver uma Implementação do Asp.Net Identity do zero.

Material sobre Asp.Net Identty tem muito na internet e, sobretudo, vídeos no Youtube. O problema é que 99,9% desse material mostra o Identity já implementado, ou explicam como ele funciona, ou cria um projeto novo com Individual Account, mas isso não basta, pois a grande maioria dos projetos em que você irá trabalhar não te dará a oportunidade de começá-lo do zero.

Por isso estamos aqui. Há pouca coragem no mundo para as grandes batalhas, mas nós somos os melhores guerreiros, portanto, vamos à luta!


Estilo de Transição

Selecione a transição que você mais gostar:
Nenhuma - Fade - Slide - Convex - Concave - Zoom

Implementação do Asp.Net Identity do Zero!

O Asp.net Identity é um Framework da Microsoft maravilhoso para se trabalhar com Autenticação e Autorização.

É um framework totalmente reutilizável, desacoplado, estensivo e totalmente testável!.

É importante frisar que os processos de Autenticação e Autorização são processos diferentes, pois a Autenticação é o processo pelo qual verificamos se as credenciais informadas por um eventual usuário são válidas, enquanto a Autorização visa identificar quais os recursos do sistema são passíveis de serem acessados por um usuário já autenticado.

Camada Cross-Cutting - Identity Criação e instalçao do Identity baseado no Entity Framework:


Cooperchip - Medical Management

Dependências do Asp.Net.Identity - Microsoft.Identity.EntityFramework e MSIdentity Core:


Cooperchip - Medical Management

Criação da Pasta Usuario e da classe RegisterViewModel.cs


Cooperchip - Medical Management
Show me Code now, please!
Classe RegisterViewModel!

Aqui o código da nossa classe base de Usuario.


	using System;
	using System.ComponentModel.DataAnnotations;
	
	namespace Cooperchip.AspNetMVC5AngularJSAoVivo.Identity.Usuarios
	{
		public class RegisterViewModel
		{
			[Key]
			public string Id { get; set; }
	
			[Required(ErrorMessage = "Campo Apelido é Obrigatório!")]
			[MaxLength(60, ErrorMessage = "Máximo de Caracter permitido: 60")]
			[Display(Name = "Apelido")]
			public string Apelido { get; set; }
	
			[Required(ErrorMessage = "Campo Nome Completo é Obrigatório!")]
			[MaxLength(120, ErrorMessage = "Máximo de Caracter permitido: 120")]
			[Display(Name = "Nome Completo")]
			public string NomeCompleto { get; set; }
	
			[Required(ErrorMessage = "Campo Data de Nascimento é Obrigatória!")]
			[Display(Name = "Data de Nascimento")]
			[DataType(DataType.Date)]
			public DateTime DataNascimento { get; set; }
	
			[MaxLength(150, ErrorMessage = "Máximo de Caracter permitido: 150")]
			public string Skype { get; set; }
	
			[MaxLength(150, ErrorMessage = "Máximo de Caracter permitido: 150")]
			public string Twitter { get; set; }
			public string Bio { get; set; }
	
	
			[Required]
			[EmailAddress]
			[Display(Name = "Email")]
			public string Email { get; set; }
	
			[Required]
			[StringLength(100, ErrorMessage = "O campo {0} deve ter ao menos {2} caracteres.", MinimumLength = 6)]
			[DataType(DataType.Password)]
			[Display(Name = "Senha")]
			public string Password { get; set; }
	
			[DataType(DataType.Password)]
			[Display(Name = "Confirmar Senha")]
			[Compare("Password", ErrorMessage = "Os campos Senha e Confirmar Senha não conscidem!")]
			public string ConfirmPassword { get; set; }
	
		}
	}
										
		
Criando o Controller Account:

Vamos criar nosso primeiro controle para a implementação do MSIdentity

1. Primeiro vamos ter que referenciar o projeto do Identity na camada de UI;

2. Então seguiremos com a criação do nosso primeiro controle do Identity na View.

Cooperchip - Medical Management
Código do Controller AccountController:

Código do Controller Account para a implementação do Usuario.


	using Cooperchip.AspNetMVC5AngularJSAoVivo.Identity.Contexto;
	using Cooperchip.AspNetMVC5AngularJSAoVivo.Identity.Usuarios;
	using Microsoft.AspNet.Identity;
	using Microsoft.AspNet.Identity.EntityFramework;
	using System.Web.Mvc;
	
	namespace Cooperchip.AspNetMVC5AngularJSAoVivo.Web.Controllers.Account
	{
		public class AccountController : Controller
		{
			public ActionResult Register()
			{
				return View();
			}
			[HttpPost]
			[ValidateAntiForgeryToken]
			public ActionResult Register(RegisterViewModel register)
			{
	
				if (ModelState.IsValid)
				{
					var userStore = new UserStore(new ApplicationDbContext());
					var userManager = new UserManager(userStore);
					var user = new ApplicationUser
					{
						Apelido = register.Apelido,
						UserName = register.Email,
						NomeCompleto = register.NomeCompleto,
						Email = register.Email,
						DataNascimento = register.DataNascimento,
						Skype = register.Skype,
						Twitter = register.Twitter,
						Bio = register.Bio
					};
					var result = userManager.Create(user, register.Password);
					if (result.Succeeded)
					{
						return RedirectToAction("Index", "Home");
					}
					else
					{
						ModelState.AddModelError("erroCriandoUsuario", "Erro na Criação do usuário!");
						return View(register);
					}
				}
				return View(register);
			}
		}
	}
				
Criando nossa View Register:

Cooperchip - Medical Management
Código da nossa View Register:

Pronto! Nossa view de Create CriarUsuario está pronta. Apenas retiramos o Back to List.

Cooperchip - Medical Management
Implementando a UserStore e o IdentityUser:

Toda a manipulação de usuários se dá através de uma UserStore, que armazena os dados do usuário. O MSIdentity já traz um objeto para a representação de um usuário, que é o IdentityUser;

Portanto nossa UserStore cuidará do armazenamento do nosso IdentityUser;

Cooperchip - Medical Management

Contexto do Identity para UserStore:


O UserStore precisará de um Contexto de Banco de Dados para armazenar, de fato, as informações dos Usuários.

Cooperchip - Medical Management
Gerenciamento de Usuário:

O UserManager é o responsável pelo gerenciamento do usuário, como permissões, acessibilidades, tamanhos de senhas, etc. E ele faz isso gerenciando a UserStore do usuário!

Cooperchip - Medical Management
Criação do Usuário e Encriptação da Senha:

O UserManager criará o usuário, com os campos retornados da View e criptografa sua senha!

Cooperchip - Medical Management
ValidationMessage na View de CreateUsuario:

Uma key para apontar o erro na criação de Usuário, caso haja!

Cooperchip - Medical Management
Criando um Contexto Único para o Identity:

Cooperchip - Medical Management
Link para Criar Usuário na _Layout.cshtml:

Cooperchip - Medical Management
Register - Registro de novo Usuário:

Cooperchip - Medical Management

Tabelas do Identity Criadas.


Cooperchip - Medical Management

Dados Processados com Sucesso. Registros Gravados!.


Cooperchip - Medical Management
Fim da Apresentação

Voltar para a Home