J'ai vu beaucoup de pages similaires sur le Web, mais la plupart d'entre elles utilisent un nouveau projet au lieu d'un projet existant, ou n'ont pas les fonctionnalités nécessaires. J'ai donc un MVC 5
projet existant et je souhaite intégrer l' identité ASP.NET MVC5 avec des fonctionnalités de connexion, de confirmation par e-mail et de réinitialisation de mot de passe .
En plus de cela, j'ai également besoin de créer toutes les tables nécessaires sur la base de données c'est-à-dire utilisateur, rôles, groupes, etc. (j'utilise EF Code First dans mon projet). Existe-t-il un article ou un échantillon correspondant à ces besoins? Toute suggestion serait appréciée. Merci d'avance...
Réponses:
Configurer l'identité de votre projet existant n'est pas une chose difficile. Vous devez installer un package NuGet et effectuer une petite configuration.
Installez d'abord ces packages NuGet avec la console du gestionnaire de package:
Ajoutez une classe d'utilisateurs et avec
IdentityUser
héritage:Faites la même chose pour le rôle:
Changez votre
DbContext
parent deDbContext
pourIdentityDbContext<AppUser>
aimer ceci:Si vous utilisez la même chaîne de connexion et la migration activée, EF créera les tables nécessaires pour vous.
En option, vous pouvez étendre
UserManager
pour ajouter la configuration et la personnalisation souhaitées:Étant donné que l'identité est basée sur OWIN, vous devez également configurer OWIN:
Ajoutez une classe au
App_Start
dossier (ou n'importe où ailleurs si vous le souhaitez). Cette classe est utilisée par OWIN. Ce sera votre classe de démarrage.Presque terminé, ajoutez simplement cette ligne de code à votre
web.config
fichier pour que OWIN puisse trouver votre classe de démarrage.Désormais, dans l'ensemble du projet, vous pouvez utiliser Identity comme n'importe quel nouveau projet déjà installé par VS. Considérez l'action de connexion par exemple
Vous pouvez créer des rôles et ajouter à vos utilisateurs:
Vous pouvez également ajouter un rôle à un utilisateur, comme ceci:
En utilisant,
Authorize
vous pouvez protéger vos actions ou contrôleurs:ou
Vous pouvez également installer des packages supplémentaires et les configurer pour répondre à vos besoins, comme
Microsoft.Owin.Security.Facebook
vous le souhaitez.Remarque: n'oubliez pas d'ajouter des espaces de noms pertinents à vos fichiers:
Vous pouvez également voir mes autres réponses comme celle-ci et ceci pour une utilisation avancée de l'identité.
la source
AppRole
le gestionnaire de rôles et Identity pour classer l'utilisateur. Et puisqueRole
s etRoleManager
ont déjà implémenté par Identity lui-même, vous n'avez pas besoin de réécrire le code déjà implémenté. Je mettrai à jour le message pour vous montrer comment vous pouvez utiliser les rôles. Et comme je l'ai déjà dit, il vous suffit d'ajouterAppUser
et d'AppRole
entités pour initialiser l'identité. En héritantDbContext
deIdentityDbContext<AppUser>
toutes les tables nécessaires, ajoutez votre table. Vous n'avez rien à faire, il suffit d'activer la migration.Microsoft.AspNet.Identity.EntityFramework
sur votre domaine et autres pour l'interface utilisateur.web.config
. Ne remplacez pas l'ancien. Lisez ceci pour plus d'informations . Je pense que votre MVC a également été mis à niveau.AspNetRoles
AspNetUserClaims
AspNetUserLogins
AspNetUserRoles
etAspNetUsers
C'est ce que j'ai fait pour intégrer Identity à une base de données existante.
Créez un exemple de projet MVC avec un modèle MVC. Il contient tout le code nécessaire à l'implémentation d'identité - Startup.Auth.cs, IdentityConfig.cs, code de contrôleur de compte, gérer le contrôleur, modèles et vues associées.
Installez les packages nuget nécessaires pour Identity et OWIN. Vous aurez une idée en voyant les références dans l'exemple de projet et la réponse de @Sam
Copiez tous ces codes dans votre projet existant. Veuillez noter que n'oubliez pas d'ajouter la chaîne de connexion "DefaultConnection" pour Identity à mapper à votre base de données. Veuillez vérifier la classe ApplicationDBContext dans IdentityModel.cs où vous trouverez la référence à la chaîne de connexion "DefaultConnection".
Voici le script SQL que j'ai exécuté sur ma base de données existante pour créer les tables nécessaires:
Vérifiez et résolvez toutes les erreurs restantes et vous avez terminé. L'identité s'occupera du reste :)
la source
Je recommande IdentityServer . Il s'agit d'un projet .NET Foundation et couvre de nombreux problèmes d'authentification et d'autorisation.
Aperçu
IdentityServer est un framework basé sur .NET / Katana et un composant hébergable qui permet de mettre en œuvre une connexion unique et un contrôle d'accès pour les applications Web modernes et les API à l'aide de protocoles tels que OpenID Connect et OAuth2. Il prend en charge un large éventail de clients tels que les applications mobiles, Web, SPA et de bureau et est extensible pour permettre l'intégration dans les architectures nouvelles et existantes.
Pour plus d'informations, par exemple
consultez la documentation et la démo .
la source