Eu já vi muitas páginas semelhantes na Web, mas a maioria delas usa um novo projeto em vez de um existente ou não possui os recursos necessários. Portanto, eu tenho um MVC 5
projeto existente e quero integrar o ASP.NET MVC5 Identity aos recursos de login, confirmação por email e redefinição de senha .
Além disso, também preciso criar todas as tabelas necessárias no banco de dados, como Usuário, Funções, grupos etc. (uso o Código EF Primeiro no meu projeto). Existe um artigo ou amostra que corresponde a essas necessidades? Qualquer sugestão será apreciada. Desde já, obrigado...
Respostas:
Configurar a identidade para o seu projeto existente não é algo difícil. Você deve instalar algum pacote NuGet e fazer algumas pequenas configurações.
Primeiro instale estes pacotes NuGet com o Package Manager Console:
Adicione uma classe de usuário e com
IdentityUser
herança:Faça o mesmo para a função:
Mude seu
DbContext
pai deDbContext
paraIdentityDbContext<AppUser>
assim:Se você usar a mesma cadeia de conexão e a migração ativada, o EF criará as tabelas necessárias para você.
Opcionalmente, você pode estender
UserManager
para adicionar sua configuração e customização desejadas:Como o Identity é baseado no OWIN, você também precisa configurar o OWIN:
Adicione uma classe à
App_Start
pasta (ou a qualquer outro lugar, se desejar). Esta classe é usada pelo OWIN. Esta será sua classe de inicialização.Quase pronto, basta adicionar esta linha de código ao seu
web.config
arquivo para que o OWIN possa encontrar sua classe de inicialização.Agora, em todo o projeto, você pode usar o Identity, como qualquer novo projeto já instalado pelo VS. Considere a ação de login, por exemplo
Você pode criar funções e adicionar aos seus usuários:
Você também pode adicionar uma função a um usuário, assim:
Ao usar,
Authorize
você pode proteger suas ações ou controladores:ou
Você também pode instalar pacotes adicionais e configurá-los para atender aos seus requisitos, como
Microsoft.Owin.Security.Facebook
ou o que você quiser.Nota: Não esqueça de adicionar espaços de nome relevantes aos seus arquivos:
Você também pode ver minhas outras respostas como esta e esta para uso avançado da identidade.
fonte
AppRole
o gerenciador de funções do Identity para classificar o usuário. E uma vez queRole
s eRoleManager
já implementados pela própria identidade você não precisa reescrever o código já implementadas. Vou atualizar a postagem para mostrar como você pode usar funções. E como eu disse antes, você só precisa adicionar entidadesAppUser
eAppRole
para inicializar a Identidade. Ao herdar o seuDbContext
deIdentityDbContext<AppUser>
todas as tabelas necessárias, adicione sua tabela. Você não precisa fazer nada, apenas ativar a migração.Microsoft.AspNet.Identity.EntityFramework
no seu domínio e outro para interface do usuário.web.config
. Não substitua o antigo. Leia isto para mais informações . Eu acho que seu MVC também atualizou.AspNetRoles
AspNetUserClaims
AspNetUserLogins
AspNetUserRoles
eAspNetUsers
Foi o que fiz para integrar o Identity a um banco de dados existente.
Crie um projeto MVC de amostra com o modelo MVC. Este possui todo o código necessário para a implementação do Identity - Startup.Auth.cs, IdentityConfig.cs, código do Account Controller, Manage Controller, Models e visualizações relacionadas.
Instale os pacotes de nuget necessários para Identity e OWIN. Você terá uma idéia vendo as referências no projeto de amostra e a resposta em @Sam
Copie todos esses códigos para o seu projeto existente. Observe que não se esqueça de adicionar a cadeia de conexão "DefaultConnection" para o Identity mapear no seu banco de dados. Verifique a classe ApplicationDBContext em IdentityModel.cs, onde você encontrará a referência à cadeia de conexão "DefaultConnection".
Este é o script SQL que executei no meu banco de dados existente para criar as tabelas necessárias:
Verifique e solucione os erros restantes e pronto. Identidade vai lidar com o resto :)
fonte
Eu recomendo o IdentityServer . Este é um projeto do .NET Foundation e cobre muitos problemas sobre autenticação e autorização.
Visão geral
O IdentityServer é uma estrutura baseada em .NET / Katana e um componente host que permite implementar o logon único e o controle de acesso para aplicativos da Web modernos e APIs usando protocolos como o OpenID Connect e o OAuth2. Ele suporta uma ampla variedade de clientes, como móveis, web, SPAs e aplicativos de desktop, e é extensível para permitir a integração em arquiteturas novas e existentes.
Para mais informações, por exemplo
confira a documentação e a demonstração .
fonte