2009-03-25 2 views
4

사용자가 내 사이트에 로그인하면 방문 날짜가 데이터베이스 (사용자 테이블)에 스탬프 처리됩니다. 이는 (사용자 지정) 멤버 자격 공급자가 처리합니다. 그러나 사용자가 "Remember me?" 옵션은 로그인 할 때 후속 방문시 로그인하라는 메시지가 (자연스럽게) 표시되지 않습니다. 이 상황에서 멤버 자격 공급자가 사용되지 않으므로 마지막 로그인 날짜가 데이터베이스에서 업데이트되지 않습니다."내 계정 정보 기억"설정시 마지막 로그인 날짜를 업데이트하는 방법은 무엇입니까?

양식 인증을 사용하면 물리적으로 로그인하는 대신 사이트를 새로 방문 할 때마다 마지막 로그인 날짜가 업데이트되도록하려면 어떻게해야합니까? 이 문제를 해결할 수있는 이벤트가 있습니까?

내가 개발하고있는 웹 사이트에서 세션 상태가 완전히 비활성화되어 있으므로 세션 상태를 사용할 수 없습니다 (세션 모듈이 제거되었습니다).

감사

답변

2

내가 (필자는이 "나를 기억"그렇지 않으면 어떻게 작동하는지 볼 수 없습니다) 쿠키를 사용하고 있으리라 믿고있어.

사용자가 로그인하면 두 개의 쿠키 (하나는 영구 저장 (체크 박스에 선택))와 1 개의 임시 (이 세션 전용)를 설정합니다. 두 번째 방법은 사용자에게 권한을 부여하는 것입니다.

그래서 사용자가 로그인해야하는 페이지에서 세션 쿠키를 찾습니다. 발견되면 정상적으로 계속하십시오. 찾을 수 없다면 영원한 쿠키가 있는지 찾아보십시오 (). 로그인 날짜를으로 설정하고 세션 쿠키를 설정하십시오. 영구 쿠키가 발견되지 않으면 그는 로그인하지 않은 것입니다.

+0

다음과 같이 변형되었습니다. 사용자가 처음 인증 할 때 비 지속 쿠키를 만듭니다. 이후의 인증 요청은 차단되고 쿠키가 존재하지 않으면 쿠키가 만들어지고 마지막 로그인 날짜가 업데이트됩니다. –

0

당신이 ASP.NET 2.0에 대해 말하고 있다고 가정하면 (회원 공급자 의견이 주어짐).

쿠키를 검사하여 사용자가 자동 ​​로그온되어야하는지 여부는 어디에서든지 멤버의 GetUser 함수를 호출해야합니다.이 함수는 사용자의 활동 날짜를 업데이트하기 위해 부울을 사용합니다. MSDN docs

:

MembershipProvider.GetUser 방법

사용자 것을 보여 입력 고유 한 사용자 식별자 및 사용자에 대한 LastActivityDate 값을 갱신할지 여부를 나타내는 부울 값으로 취 현재 온라인 상태입니다. GetUser 메서드는 지정된 사용자의 데이터 소스에서 현재 값으로 채워진 MembershipUser 개체를 반환합니다. 데이터 소스에 사용자 이름이 없으면 GetUser 메서드는 null (Visual Basic의 경우 Nothing)을 반환합니다.

+1

신속한 답장을 보내 주셔서 감사합니다. ASP.Net 3.5를 사용하고 있습니다. 쿠키를 직접 확인하지 않고 있습니다 .Net은 자동으로 쿠키를 처리합니다. 나는 .Net이 쿠키 검사를 수행하는 단계로 어떻게 연결해야할지 모르겠다. –

관련 문제