May.11

MySQL ODBC Membership- en RoleProvider

Sinds ASP.NET 2.0 is Visual Studio voorzien van speciale toegangs-controls. Het maken van een met wachtwoorden en rollen beveiligde site wordt wel heel makkelijk. Het enige nadeel (voor mij) is dat de default Providers voor toegang, de MembershipProvider en RoleProvider, zijn ge-ent op SQL Server. Mijn huidige hoster ondersteund echter alleen MySQL via ODBC DSN’s. Na wat zoeken ontdekte ik op codeproject.com een MySQL MembershipProvider en RoleProvider. Deze maakt echter gebruik van de MySQL .NET Connector en die ondersteund mijn huidige hoster niet. Nog wat verder zoeken leerde me dat Microsoft een ODBC voorbeeld heeft van de MembershipProvider en de RoleProvider. Deze zijn overigens ook terug te vinden in de MSDN documentatie van Visual Studio 2005.

Aangezien het genoemde ODBC voorbeeld uitgaat van een MS Access database (hoe kan het ook anders als je Microsoft bent) waren de 2 providers niet direct klaar voor gebruik. Zo heb ik een aantal aanpassingen gemaakt voor de PKID (ProviderUserKey) en een Boolean database velden. De PKID is van origine een GUID die niet als zodanig via MySQL kan worden opgeslagen. Binnen de provider is dit gewoon een GUID gebleven maar wordt opgeslagen in een varchar veld binnen MySQL. De boolean velden zijn omgezet binnen MySQL naar een TinyInt met de waarde 1 (true) of 0 (false). Daarnaast heb ik diverse casts vervangen zoals:

naar

De ODBC MySQL Role- en MembershipProvider kun je hier (membership.zip) downloaden.

Op de MySQL server moet het volgende script worden gedraaid. Het is handig om hiervoor een aparte database te kiezen:
MembershipTableScript.txt

De web.config moet als volgt worden aangepast:
webconfig.txt

Overigens is hier ook nog een leuke toepassing te vinden van een op een webservice gebaseerde MembershipProvider en RoleProvider. De gegevens van de gebruikers worden opgehaald en opgeslagen via een webservice.