Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNDéveloppementDéveloppement[DNN4] BDD Table Users et aspnet_users[DNN4] BDD Table Users et aspnet_users
Précédente
 
Suivante
Nouveau message
17/12/2010 16:08
 
Bonjour à tous,

J'ai un module qui synchronise les utilisateurs de DNN avec une base dans une appli PC.
C'est à dire que je fais des ajout/suppression dans la table Users.

DNN me refuse l'ajout d'un user car il dit qu'il existe déjà... J'ai investigué et en fait, il n'est plus dans la table users, je l'ai bien supprimé, mais en fait, j'ai vu qu'il existait une table aspnet_users qui est un peu un fantôme de la table Users, et mes enregistrements supprimés sont toujours dedans.
C'est clairement pour ça qu'il me refuse l'ajout.

A quoi sert cette table ?
Comment faire pour supprimer PROPREMENT ces enregistrements orphelins ?
Et pourquoi mes ajouts dans users créent bien des entrées dans aspnet_users, mais pas mes suppression ?
(y a t-il un système de synchro ?)

Pour infos, je fait ces ajouts et ces suppressions, j'utilise la méthode propre, c'est à dire que je ne fais pas une requête de barbare, mais j'utilise:
UserController.DeleteUser(ref User2Del, false, false)
et
DotNetNuke.Security.Membership.UserCreateStatus Status = UserController.CreateUser(ref UserTmp);

Merci d'avance pour vos lumières.
 
Nouveau message
18/12/2010 01:41
 
Bonjour,

En effet, c'est étrange ! Dans les dernières versions 5.x est apparu le concept de "soft delete" des utilisateurs. Lorsque l'on supprime un compte la colonne IsDeleted passe à true. En revanche, les versions 4.x n'ont pas ce comportement. Par ailleurs, tu fais les choses proprement en utilisant l'API plutôt que de toucher aux tables. J'ai donc cherché un peu dans les forum US et j'ai retrouvé des post avec un problème similaire et en particulier avec une 4.3.3. Donne moi ta version exacte, je vais voir si je trouve quelque chose et au besoin je ferais appel au Core Team.

Concernant l'utilité des tables aspnet_XXX, il faut comprendre que l'une des forces de DNN depuis ses débuts est l'utilisation de providers. Cette technique permet de découpler certaines fonctions du système et de les rendre facilement interchangeables sans perdre la possibilité de mise à jour. Par exemple, le système de ré-écriture d'url, le menu (3 en standard), le mini traitement de texte, le système de cache, la couche d'accès aux données ainsi que bien sûr le système d'authentification. Par défault, DNN utilise celui d'ASP.NET ce qui explique que tu retrouve des données provenant des comptes utilisateurs dans plusieurs tables. Les tables préfixées par aspnet_ sont les tables du système d'authentification standard d'ASP.NET. Dans les versions plus récentes, ce système a encore été amélioré. Je ne liste pas tous les providers, mais il suffit de regarder le fichier web.config pour trouver la liste complète.

Gilles
 
Nouveau message
20/12/2010 09:04
 
Bonjour Ploum,

Merci pour ton investissement et tes informations très précises.
Voici ma version:
Version du PDL : CORE fr-FR 4.8.0
Date de publication : 16/01/2008

04.08.02
 
Nouveau message
20/12/2010 15:03
 
Bonjour,

Je n'ai pas de 4.8.2 installée, mais j'ai tout de même vérifié dans le code d'une 4.6.2 et j'ai trouvé quelque chose ! Un utilisateur est supprimé de la base ASP.NET que si, et seulement si, il ne figure pas dans un autre portail ! Donc, il faudrait déjà vérifier si le problème persiste lorsque tu supprime un utilisateur présent dans un seul portail. Ensuite, je voudrais savoir si ton appel à DeleteUser retourne bien True ?

Gilles
 
Nouveau message
20/12/2010 17:47
 
Ploum,

Je vérifie bien la valeur retournée par UserController.DeleteUser et il me renvoie bien true quand un user est supprimé (pour tous sauf les 2 qui sont dans aspnet_users, donc).

Et sur mon instance de DNN, je n'ai qu'un portail... Je n'utilise pas la possibilité d'en faire plusieurs.

David.
 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNDéveloppementDéveloppement[DNN4] BDD Table Users et aspnet_users[DNN4] BDD Table Users et aspnet_users