Voici un exemple de travail application ASP.NET MVC 4 qui utilise l'authentification Windows avec le fournisseur de rôles SQL Server.
Dans le fichier web.config
à l'article <system.web>
:
<roleManager enabled="true" defaultProvider="SqlRoleProvider">
<providers>
<add name ="SqlRoleProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="AspNetMembershipConnString"
applicationName="MembershipAndRoleProviderSample"/>
</providers>
</roleManager>
Cela indique au runtime asp.net utiliser fournisseur de rôle Sql et indique que la chaîne de connexion à utiliser pour localiser la base de données. Étant donné que nous utilisons le fournisseur de rôles SQL, nous avons besoin d'une base de données dans laquelle les utilisateurs et les rôles sont stockés. Pour créer la base de données, utilisez la commande aspnet_regsql.exe
(sur ma machine Windows 10 Pro sous C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319) qui permet de créer le schéma qui contient les utilisateurs et les rôles. Lorsque vous créez le schéma à l'aide de cet outil, assurez-vous que le nom de la base de données est le même que celui indiqué dans votre chaîne de connexion dans le fichier web.config (à venir).
Retour au fichier web.config ajouter la chaîne de connexion
<connectionStrings>
<add connectionString="DATA SOURCE = PersonalLaptop\SQLEXPRESS2014; INITIAL CATALOG = AspNetMembership; INTEGRATED SECURITY = SSPI;"
name="AspNetMembershipConnString" providerName="System.Data.SqlClient"/>
</connectionStrings>
Assurez-vous que le nom de la chaîne de connexion est le même que celui de la section de fournisseur de rôle sql.
Remarque: Vous n'avez pas besoin du fournisseur d'appartenance, car vous utilisez le mode d'authentification Windows intégrée.
Créer un rôle et ajoutez un utilisateur
Il y a 2 façons de le faire.
1) Ouvrez la base de données SQL où aspnet_regsql.exe
a créé les tables et procédures stockées.Créer un nouveau record en aspnet_Users
, aspnet_Applications
, aspnet_UsersInRoles
et aspnet_Roles
tables. Puisque vous utilisez l'authentification Windows, assurez-vous d'ajouter le nom d'utilisateur Windows (nom de domaine complet/nom d'utilisateur local) dans le tableau aspnet_Users
.
2) Dans la méthode de l'indice de HomeController utilisent le code:
Roles.CreateRole("SuperDuperUsers");
Roles.AddUserToRole("<WindowsUserName>", "SuperDuperUsers");
Cela va créer le rôle et l'utilisateur sera ajouté dans ce rôle pour vous.
J'ai téléchargé l'échantillon asp.net mvc 4 application here sur GitHub pour vous.
Dans le repo github, fichier SqlScriptOfTheDatabase.sql contient le schéma qui est créé pour stocker les utilisateurs et les rôles et leurs relations. Vous pouvez utiliser ceci au lieu d'utiliser la commande aspnet_regsql.exe
si vous le souhaitez.
Espérons que cela aide!
Oui, vous pouvez utiliser le fournisseur SQL rôle pour autoriser l'accès au contrôleur MVC dans votre application Web. Vous pouvez également afficher/masquer les parties d'une vue à l'aide de la méthode User.IsInRole (String) qui renvoie un type booléen. –