Neste artigo vou mostrar como podemos customizar o Identity em projetos criados com o template de projeto da ASP .NET Core 2.1.
Como eu já escrevi neste outro artigo, um dos novos recursos do ASP.NET Core 2.1 é o Identity como biblioteca de interface do usuário. Esse novo recurso poupa você de todo o trabalho de adicionar e configurar o Identity para uma aplicação ASP.NET Core.
Vimos que o Identity agora é implementado usando o pacote nuget Microsoft.AspnetCore.Identity.UI e não temos mais nenhum código de controllers e views no seu projeto. Tudo bem, mas e se você quiser personalizar a interface do usuário?
Sem problemas, pois podemos fazer isso no Visual Studio usando os recursos do scaffolding. Neste artigo veremos como fazer o Scaffold do Identity UI na ASP.NET Core 2.1 e aplicar uma personalização.
Recursos
- .NET Core 2.1
- VS 2017 Community
Abrindo o VS 2017 e criando um novo projeto teremos as seguintes operações:
- Create New Project
- Visual C# > Web > ASP .NET Core Web Application
- Informe o nome AspnCore21_Identity
- Clique em OK e a seguir selecione o template Web Application(Model-View-Controller), marque ASP .NET Core 2.1
- Clique em Change Authtentication, marque Individual User Account e clique em OK
Ao clicar no botão OK você obteve o projeto criado com a estrutura de arquivos mostrada na figura abaixo:

Observando a estrutura do projeto veremos que o pacote nuget da identidade UI é incluído como referência e apenas o arquivo _ViewStart.cshtml está presente na pasta Areas > Identity > Pages para suportar a identidade. Não há controladores, modelos e visualizações presentes relacionados à identidade na estrutura da solução.
Observe que no arquivo Startup o método Configure() define o uso de arquivos estáticos e da autenticação:
Como personalizar o Identity
Agora personalizaremos o Identity já implementado nesta aplicação. Para isso, clique com o botão direito do mouse sobre o projeto e clique em Add > New Scaffolded Item:
Na janela Add Scaffold, clique em Identity e depois em Add:
Será aberta uma caixa de diálogo “Add Identity” onde você pode ver uma lista de todos os arquivos responsáveis pela integração da identidade.
Você pode escolher um ou vários arquivos que deseja substituir. Para exemplificar eu selecionei Account\Register.
Podemos também fornecer a classe de contexto de dados onde você pode escolher uma classe existente ou criar uma nova classe de contexto de dados. Selecionei a classe de contexto padrão ApplicationDbContext criada no projeto.
Após clicar no botão Add, visualizando a estrutura do projeto na janela Solution Explorer teremos o resultado abaixo:
Veremos o arquivo Register.cshtml na pasta Account dentro da pasta Identity/Pages e todo o código relacionado será adicionado à solução.
Veremos também o arquivo ScaffoldingReadme.txt adicionado à raiz do projeto. Este é apenas um arquivo de texto com instruções de configuração.
O arquivo IdentityHostingStartup.cs contém a configuração dos serviços relacionados à identidade.
Agora vamos abrir o arquivo Register.cshtml e alterá-lo fazendo a tradução dos textos para o português.
A seguir vamos abrir o Register.cshtml.cs e alterar os textos das validações do Model:
Podemos alterar também o código do arquivo_ LoginPartial.cshtml usado no arquivo _Layout.cshtml que é definido como o arquivo de layout no arquivo _ViewStart.cshtml dentro da pasta \Areas\Identity\Pages.
Após essas alterações executamos o projeto e clicamos no link Registrar:
Temos assim a nossa página Register.cshml personalizada em português.
Dessa forma temos que a implementação da Identity como uma Razor Class Library facilitou basta a vida do desenvolvedor, sendo flexível a ponto de permitir a customização e o controle através do Scaffolder Identity como vimos neste artigo.
Na próxima parte do artigo veremos como criar um projeto usando a ferramenta de linha de comando NET CLI.
Pegue o projeto aqui: AspnCore21_Identity.zip