Nous avons une petite application que nous avons construite dans notre temps libre à l'aide des dernières bibliothèques MVC3 et entité Framework .Net Disponible à l'époque et l'a déployé. La direction l'a aimé, et ils le souhaitent intégré à une application Web Weight 3.5 Wegacy 3.5. p>
J'ai besoin d'une manière d'une manière ou d'une autre, utilisez les mêmes sessions d'authentification sur les deux applications. J'utilise le même dB et l'application d'authentification à l'aide des fournisseurs d'adhésion et de profil .NET. Cela fonctionne bien, mais les utilisateurs doivent se connecter séparément dans l'application MVC, même lorsqu'ils sont déjà connectés pour l'application principale. Je suis ouvert à toutes les suggestions: Permettre la session d'état à un niveau différent , ou cookies partagés , etc. p>
Quelle est la meilleure façon de contourner cette exigence de connexion et si je devrais intégrer l'application MVC dans les formes WebFormes ou la conserver en tant qu'application indépendante? Mes principales préoccupations concernant la décision seraient du temps pour une intégration complète et la maintenance ultérieure des applications. P>
4 Réponses :
Vous voudrez peut-être envisager de simplement intégrer cette application dans votre application Web Forms directement. Les deux peuvent coexister dans la même application. P>
L'authentification des formulaires utilise des cookies pour suivre les utilisateurs. Les cookies ne peuvent être partagés qu'entre le même domaine. Donc, par exemple, si vous aviez Vous devez également vous assurer que les deux applications partagent le même touches de la machine car un cookie d'authentification émis par app1.foo.com code> et
app2.foo.com code> configurez simplement ces deux applications pour partager le même cookie de domaine. Par exemple, les deux Web.config doivent partager la même configuration d'authentification des formulaires:
app1 code> doit être déchiffré par
app2 code> avec les mêmes clés. P> p>
Votre attribut de domaine devrait réellement lire .foo.com code> - vous ne serez pas autorisé à définir des cookies avec une seule période.
Premièrement, le fait qu'une application est ASP.NET MVC ne fait aucune différence ici :)
Deuxièmement, voici un exemple de quoi faire de MSDN: P>
http://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx p>
Petit extrait de cette page: p> . P> PS p> Les conseils de Striplingwarrior de fusionner les deux applications Bien que ne soient pas vraiment nécessaires mais peuvent être Très utile pour les intégrations futures. Vous pouvez finir plus tard par le faire quand même. P> p>
+1 Pour mentionner également les touches de la machine - même s'ils sont sur la même machine, si les pools d'applications sont différents, il y aura des problèmes si ceux-ci ne sont pas définis. Votre attribut de domaine devrait réellement lire .Contoso.com code> - vous ne serez pas autorisé à définir des cookies avec une seule période.
Stockez l'état de la session dans une base de données. Stockez la clé de session dans les biscuits de chaque sessions. Lors de l'événement d'acquisitionState du cycle de vie des deux applications, obtenez l'ID de session du cookie, chargez les données de session de la base de données et mettez à jour votre httpcontext.user code>. Vous aurez alors les mêmes données d'authentification dans les deux applications. p>
Vous pouvez simplement définir le mode SessionStateState code> sur
SQLServer code> ou
snowserver code> et le cadre s'occupera de tout cela pour vous (Session Serialising à une base de données , Stockage de la clé de session dans un cookie, etc.): msdn.microsoft.com /en-us/library/ms178586.aspx
Cela ne semble pas précis. Si je vous rappelle correctement, la session serait stockée en association avec un ID d'application. Puisqu'il exécute deux applications distinctes, cela ne résoudrait pas les mêmes données.