2009-08-17 6 views
8

안녕하세요사용자를 2 주간 로그인 상태로 유지하려면 어떻게합니까?

asp.net 회원과 함께 asp.net mvc를 사용하고 있습니다.

클릭하면 쿠키를 삭제하지 않는 한 2 주 동안 로그인 한 사용자를 계속 유지할 수있는 확인란이 필요합니다.

그래서 나는

FormsAuthentication.SetAuthCookie (사용자 이름, createPersistentCookie)

가 알고 있지만 이주 보존을 위해 그것을 설정하는 방법을 모르겠어요.

대부분의 회원 정보를 다시 작성했습니다. 그래서 Create()와 VerifyUser() 같은 것들을 사용하지 않습니다.

+0

대답을 승인 된 것으로 간주 했습니까? –

답변

4

web.config에서 전역 세션 시간 초과 (값은 분)를 설정할 수 있습니다.

<system.web> 
    <authentication mode="Forms"> 
      <forms timeout="20160"/> 
    </authentication> 
</system.web> 

이것은 모든 인증 된 사용자를위한 것입니다. 'Remember Me'기능을 사용하려면 쿠키/티켓을 설정하는 코드를 직접 작성해야합니다. 이와 비슷한 것 (촬영 된 from here) :

protected void Page_Load() 
{ 
    if (Request.Cookies["username"] == null || Request.Cookies["username"].Value.ToString().Trim() == "") 
    { 
     Login1.RememberMeSet = true; 
    } 
    else 
    { 
     Login1.UserName = Request.Cookies["username"].Value.ToString().Trim(); 
     Login1.RememberMeSet = true; 
    } 
} 
protected void RememberUserLogin() 
{ 
    // Check the remember option for login 

    if (Login1.RememberMeSet == true) 
    { 
     HttpCookie cookie = new HttpCookie("username"); 
     cookie.Value = Login1.UserName.Trim(); 
     cookie.Expires = DateTime.Now.AddHours(2); 

     HttpContext.Current.Response.AppendCookie(cookie); 
     Login1.RememberMeSet = true; 

    } 
    else if (Login1.RememberMeSet == false) 
    { 
     HttpContext.Current.Response.Cookies.Remove("username"); 
     Response.Cookies["username"].Expires = DateTime.Now; 
     Login1.RememberMeSet = false; 
    } 

} 
+1

을 수정했는데 상자를 체크하지 않으면 어떨까요? 모두가 그 환경을 얻지 못할 것입니까? – chobo2

+0

예, 죄송합니다. 질문을 잘못 읽었습니다 - 특정 질문을 해결하기 위해 내 답변을 업데이트 할 것입니다 ... –

+0

web.config에있는 것과 같은 항목을 설정했지만 만료 만료를 해제하면 필요. – chobo2

16

해시 키 또는 임의의 문자열을 쿠키와 데이터베이스에 모두 추가합니다 (동일한 키 모두). 쿠키와 데이터베이스 값이 같으면 사용자가 새 세션을 시작할 때 다시 로그인하십시오. 사용자가 2 주일에 도달하면 cronjob (Unix) 또는 예약 된 작업 (Windows)을 사용하여 데이터베이스에서 비밀 키를 제거하십시오.

경고 : 사람들이 브라우저를 해킹 할 수 있으므로 쿠키 만료 날짜에 의존하지 마십시오.
규칙 : 절대 사용자를 신뢰하지 마세요.

+0

임의 문자열의 해시가 솔루션 보안을 향상시키는 방법을 설명해 주시겠습니까? 임의 문자열의 해시가 데이터베이스와 쿠키에 모두 저장되는 경우 데이터베이스와 쿠키에 임의의 문자열을 저장하는 것과 본질적으로 동일하지 않습니까? – rinogo

+0

해시 키와 임의의 문자열을 동의어로 사용하고 있습니다. –

2

만료일이 2 주인 간단한 쿠키 만 사용하면됩니다.

+2

훨씬 간단한 방법 일뿐만 아니라 해킹하기가 가장 쉽습니다. –

+0

사소한 점이지만 만료 날짜가 설정된 경우 "세션"쿠키가 아닙니다. 그것은 "영구"쿠키입니다. – MrWhite

+0

@ w3d가 동의했습니다. –

관련 문제