Identidade no ASP.Net Core 2.1 <- Personalizar AccountController


89

Eu instalei, ASP.NET Core 2.1mas mesmo tendo criado um novo ASP.NET Core Web Applicationusando ASP.NET Core 2.1com Individual User AccountsStore user accounts in-appNão consigo encontrar o AccountController ou Views.

Ainda consigo me registrar e fazer o login sem problemas, mas não consigo encontrar o código para ele, ele estava presente no 2.0.

insira a descrição da imagem aqui


Eu fiz uma pergunta aqui se você estiver interessado em responder: stackoverflow.com/questions/51728881/… . Estou lutando para fazer logout em um aplicativo .NET Core 2.1 Identity Server 4. +1.
w0051977

Respostas:


75

Uma das mudanças no 2.1 foram as Bibliotecas de Classes Razor e a identidade padrão reside em uma delas nos modelos de autenticação individuais. Se desejar ter o código em seu aplicativo para personalizá-lo, você pode fazer o scaffold com o Visual Studio ou com a ferramenta de scaffolder global. Veja este guia sobre como fazer ambos.


21
Consegui gerar arquivos cshtml, não controladores. Guia não mencionou, alguma ideia de como gerar accountController?
user1085907

7
Ah, que pena ... é como designer no subarquivo
user1085907

16
por que isso é uma melhoria ? Isso torna as coisas desnecessariamente complicadas.
liang

94

O ASP.NET Core 2.1 introduziu um novo recurso chamado Bibliotecas de classes Razor, que permite construir visualizações e páginas como parte de uma biblioteca reutilizável. A identidade do ASP.NET Core foi movida para tal RCL. Você pode substituí-lo em seu projeto:

  1. No Solution Explorer , clique com o botão direito do mouse no projeto> Adicionar > Novo item de andaime .
  2. Do painel esquerdo do caixa de diálogo Adicionar Scaffold , selecione Identidade > ADICIONAR .
  3. Na caixa de diálogo ADD Identity , escolha os arquivos que deseja substituir.
    1. Selecione o layout se necessário
    2. Selecione ou crie classe de contexto de dados .
  4. Clique em ADD .

Para mais informações visite a documentação .


1
Você precisa clicar com o botão direito do mouse no projeto e não na solução para obter o 'Novo item de andaime' .. Obrigado pelo
aviso

2
Isso ainda não traz o campo Account Controller, diga que adicionei campos personalizados, como posso dizer que preciso deles no método de registro.
rogue39nin

Ei, e se eu quiser sobrescrever o controlador em vez da página do razor? Estou usando o SPA, então não tenho certeza se posso substituir o controlador
Robert Tirta

@ rogue39nin Sim, não há AccountController, deixe-me explicar. O que você tem scaffold está localizado na Areapasta que é uma biblioteca de classes do Razor. Portanto, por ser uma biblioteca de classes do Razor, a convenção de nomenclatura dentro dessa pasta é a mesma da Biblioteca de classes do Razor e o roteamento também, consulte este link learnrazorpages.com/razor-pages/routing#areas Se você quiser descobrir onde está a lógica de login , vá paraAreas/Identity/Pages/Account/Login.cshtml.cs
Wibisono Indrawan

7

Minha solução é criar projeto com .net core 2.0, e então atualizar o framework para 2.1 e toda a dependência para a versão mais recente




2

Até onde eu sei, o código do AccountController foi movido para as páginas do Razor (e seus code-behinds) e funciona melhor usando padrões para personalizar o código que você pode usar no Scaffold (ou seja, criar os arquivos no lugar certo) de uma rede totalmente nova Projeto Core 2.1 clicando com o botão direito do mouse no Projeto no Visual Studio 2017 e selecionando Add => New Scaffolded Item => Identity que abre uma caixa de diálogo Select. Escolha as páginas desejadas e pronto. Apenas altere as páginas que deseja e copie para o mesmo local em um projeto habilitado para identidade, pois essas novas páginas substituem automaticamente os padrões. Esta é a nova maneira de personalizar a autenticação / autorização usando o Identity. Não tenho certeza se muitos consideram esse progresso significativo!

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.