![]() |
Neste artigo eu vou mostrar como criar e atribuir roles a usuários em uma aplicação ASP .NET Core MVC. |
Quando você cria uma aplicação ASP .NET Core MVC usando o template Web Application(Model-View-Controller) com autenticação através da opção Individual User Accounts, o projeto criado possui toda a estrutura para realizar a autenticação e o registro do usuário.
Você poderá registrar e autenticar usuários na aplicação mas não poderá criar perfis de usuários (as roles) nem atribuir perfis a usuários.
Neste artigo eu vou mostrar uma forma de criar e atribuir perfis a usuários registrados e depois como fazer a autenticação baseada em roles.
Recursos usados:
Criando o projeto no VS 2017
Abra o VS 2017 Community e crie um novo projeto ASP .NET Core usando o template Empty.
Confirme as opções clicando em OK para criar o projeto.
Ao final teremos o projeto criado com a seguinte estrutura:
![]() |
Controllers HomeController – Controladores para Home, About, Contact AccountController – Controladores para Login, Register, ForgotPassword etc ManageController – Controladores para Alterar Senha, gerenciar perfil, para incluir two-factor authentication etc Data Classe ApplicationDBContext com diferentes scripts de migração para criar as tabelas do banco de dados Extensions Classes para confirmação do email, resetar passwaord, etc. Models AccountViewModels(LoginViewModel, RegisterViewModel, etc) ManageViewModels(ChangePasswordViewModel, EnableAuthenticationViewModel, etc) ApplicationUser ErrorViewModel Services Serviço para Enviar Email Views Views para Account, Manage, Home, About, Contact etc appsettings.json - arquivo de configuração contendo a string de conexão para o banco de dados Program.cs - arquivo de entrada da aplicação Startup.cs - arquivo de inicialização da aplicação
|
O recurso Identity está habilitado para o aplicativo chamando app.UseAuthentication() no método Configure da classe Startup. Isso adiciona uma autenticação baseada em cookie ao pipeline de solicitação.
Executando a aplicação iremos obter a página incial com os links para Registrar um usuário e fazer a autenticação via login.
Nota: Ao executar a aplicação pela primeira vez será acionado o Migrations Inicial que irá criar o banco de dados e as tabelas para armazenar as informações de usuários, roles, etc.
Antes de executar a
aplicação eu vou alterar o nome do banco de dados no
arquivo appsettings.json dando um nome mais
simples:
{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=AspNet_RolesDB;Trusted_Connection=True;MultipleActiveResultSets=true" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } } } |
Nota: Você pode usar qualquer outro nome da sua escolha.
Agora aplique a migração inicial existente na aplicação, usando o Package Manager Console e digitando o comando: update-database
Dessa forma teremos o banco de dados e todas as tabelas criadas no SQL Server e prontas para serem usadas em nossa aplicação.
Criando perfis de usuário
Agora veremos como criar perfis de usuários em nossa aplicação. Vou criar três perfis de usuário iniciais : Admin, User e Operator.
Vamos criar um novo
método chamado CreateRoles na classe Startup
da nossa aplicação usando o código a seguir:
private async Task CreateRoles(IServiceProvider serviceProvider) { var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>(); var userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>(); string[] rolesNames = { "Admin", "User", "Operator" }; IdentityResult result; foreach(var namesRole in rolesNames) { var roleExist = await roleManager.RoleExistsAsync(namesRole); if(!roleExist) { result = await roleManager.CreateAsync(new IdentityRole(namesRole)); } } } |
Vamos entender o código :
- O método CreateRoles
recebe como parâmetro um objeto da interface
IServiceProvider;
- Criamos dois serviços : roleManager
e userManager;-
Criamos um array de
strings contendo os perfis que vamos criar e a seguir
atribuir aos usuários : "Admin",
"User" e "Operator";
- Verificamos se os perfis já existem usando um
laço foreach; Se o perfil
não existir criamos o perfil usando o método
CreateAsync da instância roleManager;
Após criar o método vamos
invocá-lo a partir do método Configure da classe
Startup. Para isso inclua o código em azul
conforme mostrado abaixo:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseAuthentication(); app.UseMvc(routes => CreateRoles(serviceProvider).Wait(); |
Agora quando executarmos a aplicação serão criados também os perfis Admin, User e Operador.
Agora executando a aplicação novamente e examinando a tabela AspNetRoles do banco de dados AspNet_RolesDB no SQL Server Management, veremos que foram criados os perfis: Operator, User e Admin:
Assim já estamos prontos para atribuir esses perfis ao registrar um novo usuário e veremos como fazer isso na próxima parte do artigo.
Aguardem...
"E Jesus, tendo
ouvido isto, disse-lhes: Os sãos não necessitam de
médico, mas, sim, os que estão doentes; eu não vim
chamar os justos, mas, sim, os pecadores ao
arrependimento. "
Marcos 2:17
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
ASP .NET Core - Criando uma aplicação com Angular 2 - Macoratti.net
ASP .NET Core - Criando uma aplicação Web no ... - Macoratti.net