Bonjour,
Je suis confronté à un problème qui me semble étrange.
J'aimerais utiliser le membership et ses tables générées via regsql.
Cependant, mon modèle de données possède une table Personne qui est composée de champs que l'on ne retrouve pas dans la table aspnet_Users (Nom, Prenom, et DateNaissance par exemple). Pour faire la relation, la table Personne possède également un champ de type Guid qui correspond au Guid de l'user correspondant dans la table aspnet_Users.
La page de création d'une personne (et user) comporte un CreateUserWizard composé de plusieurs WizardStep.
Le premier step consiste à remplir les informations sur la personne, le 2ème celles de l'user et le dernier le(s) rôle(s).
Lorsque l'user a été automatiquement créé en base par le système du membership, la méthode CreateUserWizard_CreatedUser est appelée et insert une personne avec les informations récupérées et le guid de l'user tout juste créé.
Par la suite la méthode AssignUserToRoles_Deactivate est appelée lorsque l'internaute a choisit le(s) rôle(s) de l'user. D'une manière générale, elle appelle la méthode Roles.AddUserToRole(String nomUser, String nomRole).
Je me suis alors rendu compte que cette méthode crée un nouvel user dans la table aspnet_Users et fait le lien avec ce nouvel user dans la table aspnet_UsersInRoles.
1) Comment cela ce fait-il qu'un nouvel user soit créé ?
J'ai alors essayé de ne pas utiliser la méthode Roles.AddUserToRole et d'implémenter une méthode personnelle qui fasse simplement l'insertion dans la table aspnet_UsersInRoles pour insérer l'enregistrement {UserId, RoleId} comme cela devrait simplement le faire.
Cette insertion (association) est bonne mais le lien entre l'user et son rôle (ses rôles) ne semble ne pas être prise en compte par le système du membership notamment dans le loginview mais égalemement dans l'outil d'Administration de site Web (du menu WebSite->ASP .NET Configuration) où l'user n'a aucun rôle de coché.
2) Comment cela se fait-t'il puisque le lien entre l'user et les rôles ne se fait que dans la table aspnet_UsersInRoles ?
Enfin lorsque je modifie les rôles de l'user depuis l'outil d'Administration de site Web, un nouvel user est à nouveau créé et le lien est fait avec ce nouvel user dans la table aspnet_UsersInRoles comme décrit plus haut (avec la méthode Roles.AddUserToRole(String nomUser, String nomRole)).
(Ceci même à partir d'un user intégralement créé via l'outil d'Administration de site Web).
Qu'en pensez-vous ?
Cordialement.
Partager