2012-01-12 2 views
4

ASP.NET MVC 응용 프로그램을 개발 중입니다. 최신 버전의 쿠키에 몇 가지 추가 정보를 저장하기 위해 일부 변경했습니다. 내 고객 중 몇 명이 여전히 이전 버전을 실행하고 있습니다. 기존 고객의 기존 쿠키를 만료시키고 IIS에서 호스팅되는 새 응용 프로그램에 연결할 때 다시 로그온하도록 할 수 있습니까?인증 쿠키를 삭제하는 방법

감사합니다,

+0

그냥 쿠키에 대한 날짜를 이미 예정된 날짜로 설정하면 .... 사용자가 다시 로그인하도록 보장합니다. –

답변

17

당신은 SignOut 정적 인 방법을 사용할 수 있습니다

FormsAuthentication.SignOut(); 

이 사용자를 인증 쿠키를 제거하고 이후 요청에 대한 것은 인증되지 않습니다. 이 방법을 호출 한 후에는 리디렉션해야하므로 이후 단어를 강조했습니다.

+0

어디에이 라인을 넣어야합니까? 나는이 줄을 어디에 넣을 지 사용자가 매번 로그온하도록 강제 할 것입니다 ... –

+0

@SutikshanDubey, 사용자가 탐색 할 때 현재 사용자에게 서명하려는 일부 컨트롤러 동작에이 줄을 넣습니다. –

+0

이것은 실제로 나를 위해 작동하지 않았지만 나를 흔적에 넣었습니다. aspnetdb를 다시 작성했지만 여전히 FormsAuthenticationCookie가 브라우저에있었습니다. 그때 나는 Request.Authenticated == true의 catch-22에 있었지만 GetUser()는 null을 리턴했다. 따라서 로그 아웃 할 사용자가 없습니다. 해결책은 브라우저의 모든 쿠키를 제거하는 것이 었습니다. –

4

내가 Web.config의 내 쿠키에 새로운 이름을 부여하고,이 내 문제를 해결하는 것 : -

<forms loginUrl="~/Account/LogOn" name="InsightWebMobileCookie2" timeout="10000" slidingExpiration="true" /> 
1

문제는 여기에 당신이 모르는 있도록 쿠키 만료 날짜를 읽을 수있다 이전 사용자가있는 쿠키에서.

그래서 옵션은 다음과 같습니다

  1. 당신은 '오래된'버전에서 누구인지 알아낼 수있는 경우 - 자신의 쿠키를 만료하는 논리를 가지고있다.
  2. "VersionLogout"이라는 쿠키가 없으면 모두 강제로 로그 아웃하십시오. 일단 로그 아웃을 강요하면 "VersionLogout"이라는 쿠키를 예를 들어 1.2로 설정하면 특정 버전에 대한 로그 아웃이 강제로 이루어 졌음을 알 수 있으며 다시 (앞으로) 다시 묻지 않습니다.

이 코드를 global.asax의 Application_AuthenticateRequest 이벤트에 넣습니다. 이 시점에서 사용자는 자신의 쿠키를 확인할 수 있도록 인증되었습니다.

관련 문제