Fala Galera,
Quando vamos criar uma aplicação um dos módulos mais importante dentro de um sistema é o processo de autenticação. Este módulo é aonde devemos nos preocupar com a sua segurança porque é aonde o usuário irá digitar dados sensíveis como seu usuário e a sua senha.
O ASP.Net Core 2.0 provê um mecanismo poderoso para autenticar e autorizar um usuário dentro de uma aplicação é o ASP.Net Core 2.0 Identity.
O que é ASP.Net Core 2.0 Identity ?
O ASP.Net Core 2.0 Identity é um mecanismo que permite adicionar funcionalidades de autenticação e autorização dentro de uma aplicação. Com ele podemos adicionar mecanismo de gerenciamento de conta como criação, edição e exclusão de usuários além de fornecer mecanismo de autenticação externa como Facebook, Google e outros utilizando o OpenId ou OAuth.
Criando uma aplicação com autenticação e autorização usando o ASP.Net Core 2.0 Identity
Vamos abrir o Visual Studio 2017 e criar um novo projeto, selecione ASP.Net Core Web Application conforme a figura abaixo:
No próxima janela, escolha a opção “Individual User Accounts” neste momento estamos dizendo que nossa aplicação vai utilizar o ASP.NET Core 2.0 Identity.
A estrutura do projeto você verá algumas configurações já criadas pelo próprio template como:
- Controller de Gerenciamento de Conta
- ManageController
- AccountController
- Data
- ApplicationDBContext
- Models
- Account (Login, Register)
- Manage (ChangePassword, EnableAuthentication)
- Service
- Email Send
- SMS Send
- Views
- Account
- Manage
Agora vamos abrir o appsettings.json e configurar nosso banco de dados conforme código abaixo:
{ "ConnectionStrings": { "DefaultConnection": "Server={server};Initial Catalog=aspnetIdentity;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } } }
Agora com o nosso banco de dados configurado, vamos abrir o Startup.cs e dentro do método ConfigureServices, vamos adicionar a configuração de autenticação, conforme código abaixo:
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddIdentity<ApplicationUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); services.Configure<IdentityOptions>(options => { options.Password.RequireDigit = true; options.Password.RequiredLength = 6; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = true; options.Password.RequireLowercase = false; options.Password.RequiredUniqueChars = 6; options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30); options.Lockout.MaxFailedAccessAttempts = 10; options.Lockout.AllowedForNewUsers = true; options.User.RequireUniqueEmail = true; }); services.ConfigureApplicationCookie(options => { // Cookie settings options.Cookie.HttpOnly = true; options.Cookie.Expiration = TimeSpan.FromDays(150); options.LoginPath = "/Account/Login"; options.LogoutPath = "/Account/Logout"; options.AccessDeniedPath = "/Account/AccessDenied"; options.SlidingExpiration = true; }); // Add application services. services.AddTransient<IEmailSender, EmailSender>(); services.AddMvc(); }
Com o Identity configurado, vamos no método Configure, adicione a chamada UseAuthentication conforme código abaixo:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseBrowserLink(); app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseAuthentication(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }
Toda nossa configuração está pronta porém falta um detalhe para que possamos utilizar o ASP.Net Core 2.0 Identity, devemos criar as tabelas no nosso banco de dados, para isso execute o comando abaixo no Package Manager Console:
- update-database
Feito isso, estamos com a nossa aplicação pronta para usar o ASP.Net Core 2.0 Identity. Vamos executar a aplicação e clicar em Register
Ao clicar em Register, você deverá ser redirecionado para a tela de Home, ao abrir o nosso banco de dados podemos ver as tabelas criadas, conforme imagem abaixo:
Agora, basta explorar mais as funcionalidades como a parte de gerenciamento de usuário e podemos até mesmo habilitar a autenticação em dois fatores.
O código deste post pode ser baixado através deste link
Abs e até a próxima