2012-05-27 3 views
1

ASP.NET 멤버쉽 공급자를 만들었지 만 잘 작동하지만 사용자가 암호를 변경 한 다음 다시 로그인하려고하면 사용자가 두 개 이상의 계정이 있고 하나의 계정으로 사인 아웃하고 다른 계정으로 로그인을 시도합니다. 사용자가 브라우저에서 쿠키를 지우면 다시 로그인 할 수 있으므로 사용자가 로그 아웃하면 쿠키가 삭제되지 않습니다.사용자를 올바르게 서명하는 방법

void ClearAuthenticationCookie() 
    { 
     var cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, String.Empty) { Expires = DateTime.Now.AddYears(-1) }; 
     Response.Cookies.Add(cookie1);    
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     FormsAuthentication.SignOut(); 

     ClearAuthenticationCookie(); 

     FormsAuthentication.RedirectToLoginPage(); 
    } 
+1

당신의 개발 환경에서이 문제를 다시 만들 수 있습니까? 'SignOut' 충분해야합니다. –

+0

dev. env.에서 다시 만들 수 있습니다, 나는 모든 단계를 밟았습니다. 멤버십 공급자 코드 및 asp : 에 대한 로그인 호출 이 true를 반환하지만 구성원 공급자 공개 메서드는 asp : menu에서 빈 사용자 이름으로 새 호출을받습니다. 또한 브라우저 탭을 닫고 새 탭을 열면 다시 로그인 할 수 있습니다. –

답변

1

지금은 그것을 생각하고 정말 바보였다 로그 아웃 페이지의 FormsAuthentication.RedirectToLoginPage()는 URL에 /Login.aspx?ReturnUrl=%2fAccount%2fLogout.aspx를 넣습니다. 따라서 로그인하려고하면 다시 로그 아웃 페이지로 리디렉션됩니다. 나는이 일찍, 시간 낭비 유감 : (

+0

이 점에 대해 알아두면 좋습니다! 우리를 데이트 해! –

0

시도가 signout 페이지의 페이지로드에 추가 : 여기 내 기호 밖으로 코드

Session.Clear(); 
+0

세션을 사용하지 않습니다. enableSessionState가 false로 설정되어 있습니다 . –

관련 문제