Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[MySQL] Membership and Roles provider

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb even een vraag. Probeer namelijk de ingebouwde membership provider functionaliteit te gebruiken voor MySQL, maar loop tegen wat problemen aan. Ik maak gebruik van Visual Studio 2005 en MySQL 4.1.22. Onlangs heb ik MySQL Connector/NET 5.1 geïnstalleerd. Heb de assemblies MySql.Data.dll en MySql.Web.dll toegevoegd aan de bin directory en wilde gebruik gaan maken van de ASP.Net Web Site Administration Tool. Hier gaat het verkeerd. Ik heb de MySQLRoleProvider en MySQLMembershipProvider geselecteerd, maar op het moment dat ik naar het onderdeel Security ga krijg ik de volgende melding:

There is a problem with your selected data store. This can be caused by an invalid server name or credentials, or by insufficient permission. It can also be caused by the role manager feature not being enabled. Click the button below to be redirected to a page where you can choose a new data store.

The following message may help in diagnosing the problem: An exception occurred. Please check the Event Log.

Ondertussen wordt de web.config gewijzigd in het onderstaande.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0"?> 
<configuration> 
  <connectionStrings> 
    <add name="connMySQL" connectionString="SERVER=localhost; DATABASE=db; UID=uid; PASSWORD=pw;" providerName="MySql.Data.SqlClient" />    
  </connectionStrings> 
  <system.web> 
    <roleManager defaultProvider="MySQLRoleProvider" /> 
    <membership defaultProvider="MySQLMembershipProvider" /> 
    <compilation debug="false"/> 
    <authentication mode="Forms"/> 
    <customErrors mode="Off"/> 
  </system.web> 
</configuration>


In het eventlog vind ik de volgende melding terug:

An exception occurred communicating with the data source.

Action: GetAllUsers

Exception: MySql.Data.MySqlClient.MySqlException: Unable to connect to any of the specified MySQL hosts. ---> System.Exception: Exception of type 'System.Exception' was thrown.
at MySql.Data.MySqlClient.NativeDriver.Open()
--- End of inner exception stack trace ---
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at MySql.Web.Security.MySQLMembershipProvider.GetAllUsers(Int32 pageIndex, Int32 pageSize, Int32& totalRecords)

De credentials voor de database kloppen in ieder geval, want gebruik op meerdere pagina's dezelfde connectionstring en deze werken naar behoren.

Weet iemand wat ik verkeerd doe? Alvast bedankt!

Groeten, Weis

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je hebt de providers zelf nog niet gedefineerd. Je zet een default provider, terwijl de betreffende 'default' (MySqlRoleProvider) niet is gedefineerd.


MSDN --> Development Tools & Languages --> Visual Studio --> Visual Web Developer --> Securing asp.net web sites --> Managing users by Membership --> CONFIGURING an asp.net application to
use membership.

Op eenzelfde manier kun je in de MSDN ook terug vinden hoe je de role provider instelt.


Maar nu ben ik heeeeel erg benieuw wat je al hebt gedaan om het probleem op te lossen?

If it isn't broken, fix it until it is..


Verwijderd

Topicstarter
Oke, thanks. Misschien iets te voorbarig mijn vraag gesteld. Maar dacht eigenlijk dat de Web Site Administration Tool de default provider aan de web.config toe zou voegen. Heb hier eerder een keer gebruik van gemaakt in combinatie met SQL Server 2000 en toen hoefde ik dit niet zelf te doen.

Ik heb geprobeerd om te vinden hoe ik dan die default provider moet instellen en kwam terecht bij de volgende site: Voorbeeld MySQL membership. Het lukte me niet in eerste instantie om dit aan de praat te krijgen, maar voor de precieze foutmelding zou ik thuis moeten kijken. Verder nog wat dingen uitgeprobeerd wat ik op MySQL forums vond, maar dat lukte ook nog niet.

Maar zal vanavond als ik tijd heb even wat meer geduld opbrengen en me verder verdiepen in de beschrijving die op MSDN staat.

Verwijderd

Topicstarter
Stelde dus inderdaad niet zoveel voor. Heb het volgende toegevoegd:

<membership defaultProvider="MySQLMembershipProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="MySQLMembershipProvider"
type="MySql.Web.Security.MySQLMembershipProvider"
connectionStringName="connMySQL"
applicationName="/"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="true"
passwordFormat="Hashed" />
</providers>
</membership>

Werkt nu lokaal, alleen na uploaden blijken er wat security issues. Zodra je probeert in te loggen krijg je de volgende melding:

Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.

Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Als ik het goed begrijp heeft dit te maken met het trustlevel van de server bij mijn hostingbedrijf en kan ik hier zelf dus niets aan doen? Of is er een work around?