나는 몇 일 동안 함께 자신을 어려움을 겪고 있었다. 1) 예를 들어 사용자의 의지도 자신의 Gmail 또는 그가 현재 인증있어 다른 웹 사이트에서 로그 아웃 얻을 것을 의미, 모든 자격 증명을 플러시 : 특정 IE의 'document.execCommand('ClearAuthenticationCache');
'를 사용
모든 사람에게 좋은 옵션이 아닙니다 2) 그것만 IE의;)
나는 Session.Abandon()을 사용하여 내 Default.aspx로 리디렉션하려고했습니다. 이것만으로는 충분하지 않습니다. 만들어진 요청이 승인되지 않았 음을 명시 적으로 브라우저에 알릴 필요가 있습니다. 당신은 같은 것을 사용하여이 작업을 수행 할 수 있습니다 : 이것은 다음 발생합니다
response.StatusCode = 401;
response.Status = "401 Unauthorized";
response.AddHeader("WWW-Authenticate", "BASIC Realm=my application name");
resp.End();
: 사용자가 ==> 그 기본 로그인 창이 나타납니다 로그 아웃 버튼을 클릭합니다. 하지만 로그인 대화 상자가 사라지고 새로 고침을 누르면 브라우저는 자동으로 자격 증명을 다시 전송하여 사용자가 로그인 한 것으로 간주하지만 로그 아웃했다고 생각할 수 있습니다.
이 문제를 해결하려면 항상 고유 한 '영역'을 내야합니다.. 그런 다음 브라우저는 위에서 설명한 경우 자격 증명을 다시 보내지 않습니다. 나는 현재 날짜와 시간을 뱉어 버렸다.
response.StatusCode = 401;
response.Status = "401 Unauthorized";
string realm = "my application name";
response.AddHeader("WWW-Authenticate", string.Format(@"BASIC Realm={0} ({1})", realm, DateTimeUtils.ConvertToUIDateTime(DateTime.Now)));
resp.End();
당신이해야 할 또 다른 한가지는 페이지 캐시하지 않도록 브라우저를 말씀이다 : 그것은 IE에서 (나를 위해) 작업 장소에서 모든 것을 함께
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.MinValue);
Response.Cache.SetNoStore();
,하지만 지금까지 내가 사용자가 처음 escape 키 (기본 로그인 대화 상자 숨기기)를 누른 다음 새로 고침 (F5) 또는 브라우저 다시 버튼을 누르면 사용자가 Firefox에 로그인하는 것을 방지 할 수 없었습니다.
내가 다시 클릭하면 나는 여전히 인증을받습니다. 보호 된 void logOut_Click (개체 보낸 사람, EventArgs 전자) { Session.Clear(); Session.Abandon(); ViewState.Clear(); FormsAuthentication.SignOut(); Response.Redirect ("http://www.google.org"); } – willyconnor