0

asp.net & c# でサイトを開発しています。私は JavaScript にあまり詳しくありませんが、いくつかの目的で少し使用しています。ポップアップ ウィンドウを作成するために、次の JavaScript コードを使用しました。

<script type="text/javascript" language="javascript">
function OpenCallUpdatePop(popUrl) {
CallUpdatePop = window.open(popUrl, 'callUpPop', 'toolbar=no, location=yes, scrollbars=yes, width=900, height=700')
    setTimeout('CallUpdatePop.scroll(0,100)', 1000)
}
</script>

パラメーター popUrl は、次の c# コードによって設定されます。

string updateUrl = string.Format("UpdatePopUpPage.aspx");
ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script language=JavaScript>OpenCallUpdatePop('" + updateUrl + "');</script>");

FormsAuthentication.SignOut(); が存在するログアウト ページにリダイレクトするために、セッション タイムアウトの数秒前にページにタイマーを設定しました。起こる。LogOut ページへの Response.Redirect() は子ウィンドウからは機能しないため、javaScript 関数を試しました。

function closeThis() {
self.close()
}

これは、次の c# シャープ コードから呼び出されました。

protected void timerLogOut_Tick(object sender, EventArgs e)
{
    ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<scriptlanguage=JavaScript>closeThis();</script>");

}

ページは閉じず、代わりにログイン ページであるデフォルト ページにリダイレクトしますが、ログアウト ページにリダイレクトしたいと考えています。子ページを閉じたり、LogOut ページやその他のページにリダイレクトしたりするにはどうすればよいですか? もう 1 つの可能性は、web.config のデフォルト ページの設定を C# コードから変更して、ページが目的の場所にリダイレクトされるようにすることです。それは可能ですか?

4

1 に答える 1

0

最も可能性の高い問題は、匿名アクセスに使用できる LogOut ページがなく、ページ ナビゲーションが完了する前にセッションが実際にタイムアウトすることです。

これが発生し、web.config のフォーム認証ブロックに loginUrl が指定されている場合、ASP.Net は自動的にユーザーをログイン ページにリダイレクトします。

この動作を検出するために、特別なクエリ文字列パラメーターを追加して、ユーザーが自動リダイレクトによってログイン ページに到達したかどうかを確認できるようにします。

 <authentication mode="Forms">
    <forms name=".MYAUTH" loginUrl="default.aspx?reauth=1" protection="All" path="/" slidingExpiration="true" timeout="60" />
  </authentication>

以下を web.config に追加することで、ログアウト ページに常にアクセスできるようにすることができます。

  <location path="logout.aspx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

ログアウト ページの目的が、何が起こったかについての情報をユーザーに提供することだけである場合、実際にはログアウト ページを完全に除外し、auto-redirect クエリ文字列パラメーターに依存して、ユーザーが戻ってきたときにユーザーにメッセージを提供することができます。ログインページ。たとえば、ログイン ページでは次のようになります。

<script language="javascript" type="text/javascript">
    <!--
    if (window.location.search != "") {
        if (window.location.search.indexOf("reauth=1") != -1) {
            alert("Your login credentials have expired. Please log in again to continue.");
        }
    }
    -->
</script>
于 2011-12-11T22:23:36.457 に答える