0

asp.net ログイン ページがあります。安全のために、キャッシュをクリアしたい。しかし、コードをどこに配置すればよいかわかりません。

コードスニペットのアドバイスをありがとう。

    protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
    {
        bool UserAuthenticated = false;
        MembershipProvider AuthenticationProviderUsed = null;
        RoleProvider roleProvider = Roles.Providers["SqlRoleProvider"];
        // Try authenticating the user against each membership provider
        foreach (MembershipProvider membershipProvider in Membership.Providers)
        {
            try
            {
               ...
                 Page.Session.Add("workspriv", access_value);
            }
          if (UserAuthenticated)
          {
            Response.Redirect("~/Search.aspx");
          }
  }     

    protected void Page_Load(object sender, EventArgs e)
    {
        lblDisclaimerText.Text = AntiXss.HtmlEncode(ConfigurationManager.AppSettings["DisclaimerText"]);
        if (!IsPostBack)
        {
            if (Request.QueryString["Action"] != null && Request.QueryString["Action"].ToLower() == "logout")
            {
                Session.Abandon();
                FormsAuthentication.SignOut();
                FormsAuthentication.RedirectToLoginPage();

            }
        }
    }
4

2 に答える 2

1

ユーザーのログイン情報がキャッシュに保存されているのではないかと心配しています

そうではない。ユーザーがページを離れた後にセッションを再確立できる場合、それは前回の訪問のセッション Cookie がまだ残っているためです。

そうは言っても、それでもキャッシュをクリアしたい場合:

キャッシュ メモリをクリアするには、次のようにします。

IDictionaryEnumerator enumerator = HttpContext.Current.Cache.GetEnumerator();

while (enumerator.MoveNext())

{

    HttpContext.Current.Cache.Remove(enumerator.Key);

}

出力キャッシュをクリアするには:

HttpRuntime.Close();

http://weblogs.asp.net/morteza/archive/2008/08/11/how-to-remove-all-items-from-cache-memory.aspx

于 2012-07-11T20:32:12.263 に答える
0

bool UserAuthenticated = false; という行の直前に呼び出してください。またはページロード

List<string> cacheList = (from DictionaryEntry cache in HttpRuntime.Cache select cache.Key.ToString()).ToList();
cacheList.ForEach(c => HttpRuntime.Cache.Remove(c));
于 2012-07-11T20:36:43.787 に答える