Bonjour a tous,
N’étant pas développeur .Net a la base, j'ai un peu de misère a prendre en main le système de membership.
Je viens de prendre la main sur un projet ou le système de Membership a l'air déjà bien avancé:
- En base de donnée il y a les tables aspnet_Membership, aspnet_User, aspnet_Profile,.... qui sont si j'ai bien compris créées a l'aide de la commande aspnet_regsql.exe
- Le fichier Web.config possède un nœud Membership (défini de la façon suivante)
Dans mon projet l'acces a certaines pages est restreint aux utilisateurs loggues:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <membership userIsOnlineTimeWindow="5"> <providers> <clear /> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="true" enablePasswordReset="true" passwordFormat="Encrypted" requiresQuestionAndAnswer="false" passwordStrengthRegularExpression="" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" requiresUniqueEmail="false" passwordAttemptWindow="10" maxInvalidPasswordAttempts="30" applicationName="Suggestaurant" /> </providers> </membership>
Ce code me donnait tout d'abord l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) { return RedirectToLocal(returnUrl); } // If we got this far, something failed, redisplay form ModelState.AddModelError("", "The user name or password provided is incorrect."); return View(model);
You must call the "WebSecurity.InitializeDatabaseConnection" method before you call any other method of the "WebSecurity" class. This call should be placed in an _AppStart.cshtml file in the root of your site.
J'ai donc rajoute les lignes de code suivantes:
Je n'ai pas de fichier _AppStart.cshtml, et je ne sais si je dois en rajouter un specifiquement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 if (!WebSecurity.Initialized) WebSecurity.InitializeDatabaseConnection("DefaultConnection", "aspnet_Membership", "UserId", "Email", autoCreateTables: true); if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) { return RedirectToLocal(returnUrl); } // If we got this far, something failed, redisplay form ModelState.AddModelError("", "The user name or password provided is incorrect."); return View(model);
Maintenant j'obtiens l'erreur:
Cannot convert type 'System.Guid' to 'int'
Et la je suis un peu perdu... J'ai l'impression que lorsque l'on utilise un SqlMembershipProvider, par defaut il est suppose utilise un GUID, et non un int.
Est-ce que quelqu'un pourrait m'aider a comprendre un peu le systeme de membership de .Net?
Et aussi m'expliquer quelle modification apporter pour que le système prenne en compte les GUID?
Merci d'avance!
Partager