2009-04-08 2 views
8

SignOut() 호출이 '... login.aspx? ReturnUrl = % 2fmydomainname % 2flogout.aspx'로 리디렉션 된 후이 메서드를 사용하면 사용자가 성공적으로 로그인 할 수 있으므로 다시 로그인 할 수 없습니다. 로그 아웃 페이지로 돌아갑니다. 로그인 페이지가 webconfig에 설정되고 앱이 해당 페이지를 성공적으로 가져옵니다. ReturnURL이 URL의 꼬리 부분에 붙어있는 이유는 무엇입니까?FormsAuthentication RedirectToLoginPage Querk

답변

15

이것은 RedirectFromLoginPage의 작동 방식입니다. 현재 URL을 로그인 페이지의 쿼리 문자열에 추가합니다. 이렇게하면 로그인 페이지에서 사용자를 어디로 리디렉션 할 수 있습니다.

이 문제가 발생하지 않도록하려면 Response.Redirect을 사용하여 수동으로 로그인 페이지로 리디렉션 할 수 있습니다.

+1

는 ReturnUrl을하지 않고있는 FormsAuthentication의 동작을 모방하려면 로그 아웃에이 코드를 참조하십시오'Response.Redirect를 (FormsAuthentication.LoginUrl, 거짓),' –

+2

그리고 그 전화 후 추가 'HttpContext.Current.ApplicationInstance.CompleteRequest()' –

+0

분명히 가장 좋은 방법은 FormsAuthentication.RedirectToLogin()을 사용자를 로그 아웃하는 로그 아웃 페이지에서 사용하지 않는 것입니다. 또한 모든 FormsAuthentication 아티팩트가 지워지도록 로그 아웃 페이지를 호출하는 것이 좋습니다. http://stackoverflow.com/questions/412300/formsauthentication-signout-does-not-log-the-user -out – condiosluzverde

0

이 방법이 도움이되는지는 잘 모르겠지만 문서에 따라 문자열을 가져 와서 지정된 쿼리 문자열을 사용하여 로그인 URL로 브라우저를 리디렉션하는 오버로드 된 FormsAuthentication.RedirectToLoginPage 메서드가 있습니다.

호출, http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.redirecttologinpage.aspx

+1

아니요, 사용자 지정 쿼리 문자열을 고유 한 ReturnUrl 뒤에 추가합니다. –

1

사용

<asp:LoginStatus ID="LoginStatus1" runat="server" LogoutPageUrl="/xyz.aspx" LogoutAction="Redirect" /> 
+0

이 코드가 질문에 답하는 이유에 대한 설명에서 [편집] 해주십시오. 코드 전용 답변은 솔루션을 가르치지 않기 때문에 [낙담] (http://meta.stackexchange.com/q/148272/274165)입니다. (이 게시물은 적어도 하나의 사용자에 의해 표시되었으므로 아마도 설명이없는 답변을 삭제해야한다고 생각했기 때문일 수 있습니다.) –

관련 문제