2011-08-04 3 views
0

Lorsque l'utilisateur se connecte, il y a un certain nombre d'attributs que je dois récupérer dans ActiveDirectory, tels que leur vrai nom, certains contacts, etc. Certains de ces champs apparaîtront assez souvent sous certaines formes. La vitesse de récupération d'ActiveDirectory est assez mauvaise dans mon cas, alors je me demandais quelle serait la meilleure façon de stocker ces informations en mémoire lors de la connexion, puis de les supprimer une fois qu'ils se sont déconnectés/expirés?Quelle est la meilleure façon de stocker des informations utilisateur temporaires dans asp.net?

Mes pensées jusqu'à présent: 1) Stocker en session, mais est-ce sécuritaire? 2) Etendez l'User.Identity et stockez-la ici. Pas sûr que ce soit possible. 3) Stockez-le dans une sorte de dictionnaire global. Comment saurais-je qu'ils se sont déconnectés pour retirer la paire clé/valeur? J'utilise MVC2 pour ce projet et je n'aurai pas besoin de réécrire dans ActiveDirectory.

Répondre

1

Oui, comme il est dit, vous pouvez utiliser le fournisseur de profil pour stocker les données. J'utilise personnellement les données de session.

moi pourquoi:

1, solution de base de données via l'ajout champ dans le profil (comme additionalUserData = données ici) Faites simple à utiliser et ne prend pas de temps à mettre en œuvre la gestion des sessions. 2, les données de session sont toujours sur le serveur et là pour vous n'avez pas besoin de se soucier des données dans la base de données, et fonctionne sans elle. (peu de projets ont été réalisés de cette façon) il est raisonnablement enregistrer et facile d'accès et vous pouvez ajouter l'heure de la date d'expiration. Aussi, vous pouvez garder plus d'informations sur l'utilisateur.

Option 3th: Vous devez avoir l'horodatage et la vérification de chaque demande qui a expiré et supprimer ces enregistrements dans ce cas, vous devez avoir le dictionnaire pour chaque utilisateur ...

Le problème est le vôtre .. ..

Espérons que cela aide

1

Je le mettrais en session tant que ce n'est pas une grande quantité de données. On dirait que c'est un ajustement parfait pour l'état de la session. Il ne devrait pas y avoir de problèmes de sécurité si vous utilisez https. Si vous êtes préoccupé par la quantité de données que vous souhaitez mettre en état de session, vous pouvez également envisager d'utiliser le ASP.NET Profile Provider mais vous devez disposer d'un certain type de mécanisme pour conserver les données synchronisées avec AD (peut-être chaque l'heure à laquelle l'utilisateur se connecte). Cela étant dit, si ce n'est pas une énorme quantité de données, je pense que la session est la voie à suivre.

2

Les objets de session sont assez couramment utilisés pour stocker des informations. Si vous êtes inquiet pour la sécurité, vous pouvez utiliser HTTPS pour la communication ou vous pouvez utiliser les serveurs d'état ou SQL Server pour stocker ces informations.

Questions connexes