2010-08-11 4 views
0

Nous avons deux listes distinctes d'utilisateurs dont nous avons besoin pour alimenter l'accès aux sections de notre site. Ces listes ne peuvent pas être combinées, car l'une est synchronisée quotidiennement avec une source de données hébergée de manière externe et les deux tables doivent être identiques à 100%.Adhésion ASP.NET - Connecté en deux endroits à la fois

Nous avons mis en place deux fournisseurs d'adhésion sur le site, mais ma question est, est-il possible de permettre aux deux d'être connecté en même temps?

Le problème que je trouve est que HttpContext.Current.User.identity.name contient le nom d'utilisateur de la dernière connexion réussie.

+0

Les noms d'utilisateur seront-ils les mêmes dans les deux référentiels? –

Répondre

0

Utilisez une sorte de delimiter et mettre les utilisateurs dans le l'identité de connexion. par exemple. mp3duck/salarié1

Lorsque vous vous connectez via fournisseur d'appartenances 1, vous feriez quelque chose comme

// extract the existing prov2ID so you can keep it. GetID() would be a string split function 
string prov2ID = GetID(User.Identity.Name, 2); 
FormsAuthentication.SetAuthCookie(prov1ID + "/" + prov2ID, false); 

Et vice versa pour une connexion via fournisseur d'appartenances 2.

Si vous utilisez le < asp : login > contrôle, vous devez modifier la propriété UserName au lieu d'appeler SetAuthCookie() car le contrôle de connexion appelle SetAuthCookie() lui-même.

Vous pouvez placer n'importe quel type de contenu dans le nom de l'identité. Je l'utilise souvent pour stocker à la fois un numéro int ID pour la clé primaire de l'utilisateur et son nom d'utilisateur. Le seul inconvénient est que vous devez le nettoyer lors de l'affichage dans le code HTML. par exemple. Hello <% User.Identity.Name%> afficherait beaucoup plus que ce que vous vouliez.

+0

Merci pour la réponse Jacob. J'ai ajouté une question de suivi ci-dessous – mp3duck

Questions connexes