Je sais comment créer des utilisateurs et de les assigner à des rôles etc, mais quand j'ai essayé de creuser un peu plus profondément dans la façon dont les rôles et les tables des membres sont en mesure d'établir une relation entre eux, je me suis totalement perdu (BTW - Je ne sais comment les clés étrangères/primaire travail;))
BTW - J'ai créé des tables dans des bases de données en utilisant l'assistant de aspnet_sqlreg
Q1 - Les deux SqlRolesProvider et SqlMemebershipProvider ont une propriété NomApplication. Je pensais que pour que les deux fournisseurs puissent créer une association entre leurs utilisateurs et leurs rôles, ils devraient tous les deux utiliser la même valeur pour la propriété ApplicationName. Mais cela ne semble pas être le cas.
A) Quoi qu'il en soit, je suppose que SqlRolesProvider.ApplicationName propriété ne permet de distinguer les entrées de la table appartenant à différents fournisseurs de rôle, mais ils ne pas utiliser cette propriété afin d'associer leurs rôles uniquement avec les fournisseurs d'adhésion avec le même ApplicationName value ?! B) Mais ne serait-il pas plus pratique si les fournisseurs de rôles ne pouvaient être associés à des fournisseurs d'appartenance avec la même valeur ApplicationName (donc où SqlRolesProvider.ApplicationName == SqlMemebershipProvider.ApplicationName
) ?!
Q2 - J'étais CURIOS également si les rôles et les utilisateurs pourraient être associés si fournisseur de rôles a été connecté à DB1, alors que fournisseur d'appartenances a été connecté à DB2 . D'une manière ou d'une autre, j'étais encore capable d'assigner des utilisateurs à des rôles différents, même si les rôles étaient définis dans des bases de données différentes.
A) Mais pourquoi est-ce? A savoir, si SqlRolesProvider.ApplicationName = « rolesP » (ApplicationID = 10) et SqlMembershipProvider.ApplicationName = « membres » (ApplicationID = 100), puis pour que la table DB1 à avoir des relations avec la table dans DB2, les deux devraient se référencer par ApplicationName entrée (en réalité via ApplicationID), qui agirait comme clé étrangère/primaire.
Mais la chose est, aucun des champs de clé étrangère dans DB1 tables contient une valeur égale à SqlMembershipProvider.ApplicationID = 100, ce qui suggère qu'il n'y a aucune relation établie entre les tables dans DB1 et DB2 (je sais que ce n'est pas le cas, car je suis en mesure d'affecter des utilisateurs aux rôles). Alors qu'est-ce qui me manque?
Thanx
EDIT:
Euh, ne sais pas si quelqu'un sera toujours en train de lire, mais je l'ai fait un peu plus creuser et a même plus confus:
Si les deux rôles (avec applicationName = R1 et applicationID = 10) et fournisseur d'appartenances (avec applicationName = M1 et ApplicationID = 100) sont dans la même base de données, puis en créant un nouvel utilisateur provoque aspnet_Users table à deux créer deux entrées pour même nom d'utilisateur - un avec ApplicationID = 10 et autre avec ApplicationID = 100. Pour autant que je sache, lorsqu'un nouvel utilisateur est créé, un seul champ (avec ApplicationID = 100) doit être ajouté à aspnet_Users. Euh ?!
Voici le schéma de base de données: http://webthinker.wordpress.com/2007/11/21/aspnet-membership-schema/ – Greg