2009-08-11 3 views
0

formAuthentication을 다음 Web.Config 파일과 함께 사용하고 있습니다.FormsAuthentication.SignOut()을 수행 한 후 사용자가 다시 로그인 할 수 없음

<authentication mode="Forms"> 
    <forms name="SnowBall" timeout="30" slidingExpiration="true" loginUrl="Login.aspx"  cookieless="AutoDetect"> 
    </forms> 
</authentication> 
<authorization> 
    <deny users="?"/> 
</authorization> 

LogOut 버튼이있는 사용자 컨트롤이 있습니다. 로그 아웃 버튼의 코드입니다 :

FormsAuthentication.SignOut(); 
Response.Redirect("Login.aspx"); 

이 코드를 실행 한 후에, 나는 더 이상 사용자를 인증 할 수 있어요. "로그인"을 클릭하면 페이지가 새로 고쳐지고 이벤트 처리기가 실행되지 않습니다.

브라우저 창을 닫고 사이트를 다시 실행하면 모든 것이 정상적으로 작동합니다. 도와주세요.

+0

으로

Response.Redirect("Login.aspx"); 

을 대체 해결하려면 를 - 클라이언트의 시계가 정확합니까? - 로그인 후 사용자가 리디렉션 한 페이지에 대한 캐시 설정이 있습니까? – Dewfy

+0

nopes (캐시 설정 없음). – Rohit

+0

Fiddler를 사용하여 두 번째 로그인 후에 인증 쿠키를 확인합니다. 존재하면 모든 것이 정상입니다. 그렇지 않으면 서버 코드에 몇 가지 문제가 있습니다. – Dewfy

답변

0

나는

문제는이 라인

Response.Redirect("Login.aspx"); 

그것이 무엇을하는 것은 querystring.For 예로 ReturnUrl와 Login.aspx하는 사용자를 리디렉션에있다가 거기에 누군가 도움이 solution.Hope을 발견했다.

Login.aspx? ReturnUrl = "로그 아웃 한 페이지의 이름";

이제는 FormsAuthentication.GetRedirectUrl()이이 쿼리 문자열 경로를 보존하고 인증이이 경로로 리디렉션 된 후이 페이지를 볼 권한이없는 사용자 자격 증명을 받았습니다. 로그인 화면에 항상있었습니다 .

바보 같은 질문이 될 수 있음이 문제가

Response.Redirect(FormsAuthentication.LoginUrl); 
+0

FormsAuthentication.RedirectToLoginPage()가 더 이상 사용되지 않습니다. WebUpdate에 defaultUrl 속성이 설정되어 있어야합니다. 예 : RichardOD

+0

아니요 defaultUrl을 설정하지 않았습니다.나는 FormsAuthentication.RedirectToLoginPage()와 같은 문제에 직면했다. – Rohit

0

먼저 두 개의 개별 ID가 있음을 명확히해야합니다. 하나는 브라우저 세션에 할당 된 세션 ID이고 다른 하나는 암호화 된 영숫자 ID 인 양식 인증 쿠키입니다.

formauthentication.signout을 사용할 때마다 formauthentication 쿠키가 구현에 따라 제거됩니다.하지만 세션 ID는 그대로 유지됩니다.

피들러/파이어 폭스 브라우저를 사용하여 체크 할 수 있습니다.