Nous pouvons maintenant commencer à implémenter notre fournisseur.
La première étape est de créer une classe
LinqRoleProvider qui hérite de la classe abstraite
System.Web.Security.RoleProvider. Nous devrons donc substituer plusieurs méthodes et propriétés. La première méthode à implémenter est la procédure
Initialize. Elle permet de spécifier la façon dont le fournisseur va s'initialiser et quels attributs vous allez récupérer à partir de la section de configuration du fichier web.config afin de paramétrer les variables qui vont être utilisées dans nos méthodes comme par exemple la chaîne de connexion à la base de données.
Une variable
dc de type ProvidersDataContext va par exemple être instanciée avec le constructeur prenant en paramètre une chaîne de connexion. Nous l'utiliserons pour exécuter nos requêtes LINQ.
Public Overrides Sub Initialize(ByVal name As String, ByVal config As NameValueCollection)
If config Is Nothing Then
Throw New ArgumentNullException("config")
End If
If String.IsNullOrEmpty(name) Then
name = "LinqRoleProvider"
End If
If String.IsNullOrEmpty(config("description")) Then
config.Remove("description")
config.Add("description", "LINQ Role provider")
End If
MyBase.Initialize(name, config)
ProviderUtil.GetAndRemoveConnectionStringNameAttribute(config, "connectionStringName", name, connectionString)
dc = New ProvidersDataContext(connectionString)
Me._applicationName = config("applicationName")
End Sub
La propriété
ApplicationName sera notamment récupérée dans cette phase d'initialisation. Il s'agit d'un paramètre important et il est indispensable de le spécifier dans la section de configuration car les tables comme celles des rôles contiennent un champ
ApplicationId qui permet à ces tables d'être utilisées par plusieurs applications. C'est pourquoi on se fixe souvent comment règle de nommer l'applicationName du nom du répertoire virtuel utilisé par l'application. Ex : /Demo.