Onde estão as páginas de login e registro em um aplicativo de andaime do AspNet Core?


137

No VS 2017, criei um novo aplicativo Web ASP.NET Core. Na segunda página do assistente, escolhi Aplicativo da Web e, para Autenticação, escolhi "Contas de Usuário Individuais".

Agora, estou tentando encontrar as páginas associadas a / Account / Register e / Account / Login .

_Layout.cshtml traz _LoginPartial.cshtml, da mesma forma que no MVC clássico:

<div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
        <li><a asp-page="/Index">Home</a></li>
        <li><a asp-page="/About">About</a></li>
        <li><a asp-page="/Contact">Contact</a></li>
    </ul>
    <partial name="_LoginPartial" />
</div>

Se o usuário não estiver conectado, o _LoginPartial incluirá <a>tags que apontam para as páginas de login e registro:

<ul class="nav navbar-nav navbar-right">
    <li><a asp-area="Identity" asp-page="/Account/Register">Register</a></li>
    <li><a asp-area="Identity" asp-page="/Account/Login">Login</a></li>
</ul>

Tudo isso parece fazer sentido. Mas eu esperava que a estrutura de pastas do Areas incluísse as pastas Register e Login. Isso não. A única coisa que encontro lá é _ViewStart.cshtml

Estrutura de arquivo de áreas

Sei que o código do andaime funciona. Quando executo o projeto, o link Register aponta para "/ Identity / Account / Register" e o link Login aponta para "/ Identity / Account / Login". Ao clicar no link Registrar, recebo uma página de registro que inclui o texto "Criar uma nova conta".

Mas não consigo encontrar o texto "Criar uma nova conta" em qualquer lugar do projeto.

Alguém pode me dizer o que estou perdendo?

Respostas:


141

Foi anunciado durante a visualização do asp.net core 2.1 que a interface do usuário da identidade seria movida para uma nova biblioteca de classes Razor. https://blogs.msdn.microsoft.com/webdev/2018/03/02/aspnetcore-2-1-identity-ui/

Ainda é possível integrar as exibições de identidade em seu próprio projeto, se você preferir exibições locais: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-2.1 & tabs = visual-studio


115
Polegares para cima para a resposta e polegares para baixo para a Microsoft. Qual é o objetivo de ocultar o código dos desenvolvedores e fornecer a eles uma interface do usuário básica para usar no Auth? Isso é tão engraçado. Vamos lá Microsoft, queremos investigar o código, aprendê-lo, quebrá-lo, corrigi-lo e implantá-lo. Isso é estranho.
Teoman shipahi 15/1018

4
Existe algum comando PM para que possamos obter todos os arquivos de identidade para o local.
panky sharma

3
@pankysharma Acabei de adicionar uma resposta com um comando para fazer isso (caso alguém no futuro precise).
Alisson

3
Nós realmente precisamos usar as páginas do Razor? Não há opção para simplesmente montar visualizações MVC regulares?
clockwiseq

Se alguém é burro como eu ... Levei maneira mais do que deveria para perceber que você pode ver o Get código / Pós clicando no arquivo e selecionar "Ir para página Model"
Shoe

59

Você pode fazer isso no Visual Studio, clique com o botão direito do mouse em seu projeto e selecione Adicionar-> Novo item de andaime

Novo item de andaime

Em seguida, selecione Identidade e clique em Adicionar Selecionar Identidade

Agora selecione as páginas que você deseja substituir. Lista suspensa Data Context: e seu Namespace e Contexto devem ser preenchidos previamente para você.

Selecionar páginas

Por fim, clique em Adicionar. Se você já possui arquivos de substituição lá (ou seja, do modelo), isso avisa sobre a substituição deles.


Isso de fato funciona. No entanto, meu código não seria compilado corretamente após a importação da página de Login - a página que estou interessado em personalizar. A solução pode ser encontrada aqui: stackoverflow.com/questions/58277172/… .
Yossi Geretz 31/10/19

Obrigado pela ótima resposta John, Alguma idéia de por que o User Class Dropdown (no final do formulário) está desativado?
Hamza Khanzada

1
Obrigado, ele fez o trabalho #
AhmadMM

De memória, a classe de usuário fica ativado depois que você cria uma classe de contexto de dados (clique no botão +)
John Rah

14

Clique com o botão direito do mouse no projeto, selecione Add -> New Scaffold Item, na caixa de diálogo, selecione Identidade no painel esquerdo.

insira a descrição da imagem aqui

insira a descrição da imagem aqui


Você também pode gerar estas páginas usando este comando:

dotnet aspnet-codegenerator identity -dc WebApplication1.Data.ApplicationDbContext

Substitua por seu próprio namespace + nome DbContext. As páginas são geradas aqui:

insira a descrição da imagem aqui


Se você vir esse problema:

O recurso 'literal padrão' não está disponível no C # 7.0. Por favor, use o idioma versão 7.1 ou superior.

Você pode corrigi-lo adicionando isso a você .csproje reconstruindo-o:

<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="3.2.0-beta3-final" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.2.0-beta3-final" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.2.0-beta3-final" />

ERRO: dotnet: Falha no andaime. Não foi possível encontrar arquivo de projeto na pasta
Diego Venâncio

@ DiegoVenâncio você substituiu WebApplication1.Data.ApplicationDbContextpelo namespace e nome de arquivo corretos?
Alisson

2
Naturalmente, o trabalho depois de remover esta última linha: <PackageReference Incluir = "Microsoft.CodeAnalysis.CSharp.Workspaces" Version = "3.2.0-beta3-final" />
Diego Venâncio

1
Você também pode fazer isso através do Visual Studio Solution Explorer stackoverflow.com/a/54995794/2073738
Suit Boy Apps

1
@DaImTo não deve haver hífens entre dotnet e aspnet. Deveria ser dotnet aspnet-codegenerator. Talvez este seja o problema?
Alisson

6

'Se você quiser que todo o código de identidade esteja no seu aplicativo para poder alterá-lo da maneira que desejar, use o novo andaime de identidade para adicionar o código de identidade ao seu aplicativo. Todo o código de identidade do andaime é gerado em uma pasta de área específica da identidade, para que fique bem separado do código do aplicativo. '

https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap/#identity

Funciona muito agradável e fácil para mim.


1
como alterar para ver ou editar código de identidade em localhost
Sharma panky

Eu usei isso hoje em um projeto existente no qual atualizei para o 2.2, com o DbContext existente e funcionou muito bem depois que eu disse ao meu contexto existente que estava herdando do Identity!
jamheadart

1

Um pouco tarde para a festa, mas depois de frustrações com a interface do usuário da identidade, desisti dela. Crie seus projetos sem ele. Meu conselho é (ao usar o 2.1 ou 2.2) criar sua própria conta / gerenciar controladores e páginas mvc. Alguma depuração startup.cs será necessária. Desative também a opção de compilação de exibição de publicação (ou seja, views.dll). Talvez eu não tenha uma opção definida, mas o compilador ignora completamente qualquer alteração nos blocos de script no nível da página.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.