2012-07-11 2 views
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(); 

      } 
     } 
    } 
+0

어떤 캐시를 삭제 하시겠습니까? '캐시 '에있는 모든 것? 출력 캐시는 무엇입니까? –

+0

여기에 캐시가 있습니까? – DarthVader

+0

아마도 잘못된 질문 일 수 있습니다. 나는 사용자의 로그인 정보가 캐시에 저장되었다고 걱정한다. –

답변

1

난 그냥 사용자의 로그인 정보는 아니다 캐시

에 저장 우려하고있다. 사용자가 페이지를 떠난 후 다시 세션을 다시 설정할 수 있다면 이전 방문의 세션 쿠키가 남아 있기 때문입니다.

캐시 메모리를 지우려면, 당신은이 작업을 수행 할 수 있습니다 :

HttpRuntime.Close(); 

:

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

while (enumerator.MoveNext()) 

{ 

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

} 

출력 캐시를 지우려면

는 여전히 캐시를 지우려면, 그런 말로 미루어 보아, http://weblogs.asp.net/morteza/archive/2008/08/11/how-to-remove-all-items-from-cache-memory.aspx

+0

Page_Load 또는 Login1_Authenticate에 있습니까? –

+0

사용자가 로그인 할 때 해당 작업을 수행하려는 경우 Login1_Authenticate가 더 적절한 장소처럼 보입니다. 왜 캐시를 지우시겠습니까? –

+0

업데이트 된 답변도 참조하십시오. 나는 네가 이것을하고 싶어한다고 생각하지 않는다. –

0

라인 bool UserAuthenticat ed = false; 또는 페이지로드

List<string> cacheList = (from DictionaryEntry cache in HttpRuntime.Cache select cache.Key.ToString()).ToList(); 
cacheList.ForEach(c => HttpRuntime.Cache.Remove(c)); 
+0

Session_Start 이벤트가 없지만 코드에 세션이 있습니다 (방금 업데이트 된 코드). –

+0

캐시 지우기 코드를 추가 할 적절한 위치를 알고 싶습니다. –