2013-10-21 4 views
1

사용자가 mvc 응용 프로그램에서 로그 아웃 할 때 LogIn Id 텍스트 상자를 복원해야하지만 Logout 작업에서 FormAuthentication.Signout()을 실행하고 session.clear() 그리고 session.abandon() 그래서 내가 로그 아웃했을 때 나는 지금 막 로그 아웃 한 사용자 로그인 ID를 얻을 수 없다. 어떻게 로그 아웃 할 때 그 사용자 로그인 ID를 얻는가?mvc에서 로그 아웃 한 후 사용자 로그인 ID를 얻는 방법

+0

참조 http://stackoverflow.com/questions/1064271/asp-net-mvc-set-custom-iidentity-or-iprincipal/1064345#1064345 – haim770

+0

로그 아웃 및 세션을 취소하기 전에 해당 사용자 ID 및 그것을 어느 곳에 보관하십시오. 응용 프로그램에서 사용자 로그 오프에 대해 몇 가지 작업을 수행하려면 세션 지우기 전에 해당 작업을 수행하는 것이 좋습니다. – 111

답변

2

다른 위치 (예 : 쿠키)에 로그인을 저장해야합니다. 어쩌면 초기 로그인 중에도 (로그 아웃하지 않을 때).

그래서 사용자가 로그인 할 때 "긴"지속성 (몇 달 동안 지속될 수 있음)이있는 일부 쿠키에 ID를 저장하지만 모든 쿠키에서이 쿠키를 사용하지 않습니다.

"나중에"인증되지 않은 페이지를 렌더링하면 쿠키를 확인하고 로그인 내용을 쿠키 상자에 기록 할 수 있습니다.

+0

+1. 보안 및 개인 정보 보호 문제를 해결하려면 사용자가 "이 컴퓨터에서 나를 기억"확인란을 선택해야합니다. –

1

사용자가 로그 아웃 한 후 로그인보기를 표시하기 만하면됩니다. 세션을 삭제하기 전에 ID를 가져 와서 로그 아웃하십시오. 그런 다음

TempData["LastUserId"] = theId; 

, 당신은 로그인 행동을 리디렉션 할 수 있습니다 ... 그리고 로그인 액션 내에서 당신은 TempData에서 그것을 검색하는 사용자 ID에 액세스 할 수 있습니다 :

그런 다음, TempData에 넣어

var userId; 
if(TempData["LastUserId"] != null){ //if the user is coming directly to login, it will be null. 
userId = TempData["LastUserId"]; 
} 
관련 문제