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)

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>
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
 
            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);
Ce code me donnait tout d'abord l'erreur:
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:
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);
Je n'ai pas de fichier _AppStart.cshtml, et je ne sais si je dois en rajouter un specifiquement.
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!