2009-09-21 9 views
1

J'ai une application ASP.NET 2.0 qui utilise l'authentification par formulaire. Lorsqu'un utilisateur se connecte à l'application, un objet de session est créé ainsi qu'un cookie et tout va bien. L'application permet à un utilisateur de choisir entre plusieurs bases de données pour travailler en fonction de leurs privilèges. Le problème est que si l'utilisateur veut ouvrir un autre onglet dans IE pour se connecter et travailler dans une base de données différente à côté du premier onglet auquel il s'est connecté, cela ne fonctionne pas. Il ne voit que la session de l'onglet précédent et charge le nouvel onglet directement dans la base de données de l'onglet précédent, sans passer par l'écran de connexion.ASP.NET Multi Session

Existe-t-il un moyen de séparer les sessions de manière unique afin que les utilisateurs puissent se connecter à l'application dans le même navigateur (différents onglets) et que plusieurs sessions soient connectées à l'onglet approprié?

Merci Chris

Répondre

1

Ne pas utiliser les sessions. Passez tout autour des champs cachés.

Chaque fois que l'utilisateur fait une sélection que vous ne souhaitez pas répliquer dans une autre fenêtre, stockez cette valeur dans un champ masqué afin qu'il soit transmis avec la publication suivante. Évidemment, ces données seront perdues si toute autre navigation de page est effectuée, donc cela vous limite.

1

Les onglets dans les navigateurs n'offrent pas l'isolation de ce type, même l'ouverture de nouvelles instances du navigateur ne prend souvent pas en charge cette fonctionnalité - elle dépend du navigateur. Vous pourriez envisager d'ajouter le nom de la base de données en tant que paramètre dans l'URL, cela serait différent pour chaque onglet.

3

Je pense que les sessions ne sont pas le bon endroit pour stocker vos données. Vous pouvez envisager d'utiliser une autre solution d'entretien de l'Etat tels que ViewState, les variables de formulaire, Querystring, biscuits, etc.

Vous pouvez trouver plus d'informations à partir Here

1
session

est en effet pas un bon choix ici parce que quand vous avez essayé d'ouvrir la nouvelle instance de l'application à ce moment-là, vous êtes en train de tuer votre session précédente. Les autres façons de mettre en œuvre est d'utiliser l'état d'affichage.