3

.netに本番Webサイトがあり、Webサイトから仮想アプリケーションとして実行されるサードパーティのWebアプリがあります。私は、Webサイトとサードパーティアプリの間のセッションタイムアウトを維持するという任務を負っています。つまり、ユーザーがサードパーティのアプリでアクティブである限り、セッションは存続するため、20分の有効期限が切れた後でも、ユーザーがWebサイトに戻ると、セッションはアクティブなままです。私たちはセッション管理のためにウェブサイトとアプリの両方でフォーム認証を使用しています、そして私が読んだことから私はウェブ設定の設定を通してこれを行うことができるはずです。両方のwebconfigファイルの認証セクションを次のように更新しました

基本的に私はwww.mydomain.comとwww.mydomain.com/app/で作業しています

    <authentication mode="Forms">
        <forms
           name=".ASPXFORMSAUTH"
           loginUrl="home.aspx"
           enableCrossAppRedirects="true"
           slidingExpiration="true"
           path="/"
           domain=".infinedi.net">
        </forms>

    </authentication>
    <machineKey
          validationKey="BDEA0BE471E4E2C24E5A9552AF232C3E7BF584DBEEAA1262CEE78CB5126FBBBE9E8007DB5ED8357FEE5C2C5B6FF3FC7D34C7CEA54DE3790560FCDEBF44415804"
          decryptionKey="2E31C984223964655C203E3A91AF139B1AE0A964F1475E204E6AACE62840EAB0"
          validation="SHA1"
          decryption="AES"
          />

しかし、これはうまくいきませんでした。フィドラーで見ていると、サードパーティのアプリにアクセスするとすぐに、新しい.ASPXFORMSAUTHセッションが取得されることがわかります。これが、Webサイトセッションがタイムアウトする理由であると思われます。webconfigを介してこれを行うことは可能ですか、それとも私が進むべき別の方向性がありますか?

4

2 に答える 2

0

あなたが抱えている問題は、ASP.NET がアプリケーションごとに新しいセッション ID を割り当てるためだと思います。Cookie 名と暗号化パラメーターが同じであっても、内部で生成されるセッション ID は異なります。既存のセッションを手動で検出し、セッション ID を更新することで、これを回避できる場合があります。Flash は適切な Cookie を送信せず、サーバー側のアップロード ハンドラがユーザーの既存のセッションを識別できなかったため、これは Flash ベースのファイル アップローダの一般的な回避策でした。

http://snipplr.com/view/15180/

上記の URL のサンプル コードを使用すると、Flash アプリはクエリ文字列にセッション ID を含む URL にポストし、BeginRequest ハンドラーがこれを検出して Request.Cookies コレクションを更新します。私はこれをテストしていませんが、コードを少し変更して、親アプリから既存の Cookie を検出できる場合があります。

別の方法として、次を参照してください: ASP.NET セッション状態サービスを使用してアプリケーション間でセッションを共有する

于 2012-05-11T14:44:24.993 に答える
0

これを機能させることができなかったため、iframe を使用することにしました。後で再検討する必要がある醜い解決策。

于 2012-05-11T14:12:02.040 に答える