2013-02-25 1 views
0

저는 DefaultWebSite에서 작동하는 여러 응용 프로그램과 웹 서비스 중 하나로 IIS 7에서 설정된 웹 응용 프로그램을 작성했습니다. localhost에서 개발할 때 FormsAuthentication 쿠키가 지속됩니다. 그러나 서버에 게시 할 때 쿠키는 영구적이지 않습니다. SQLServer 세션을 사용하고 응용 프로그램 풀 재활용을 배제하기 위해 웹 구성에 유효성 검사 키가 있습니다. 나는 운이 없으면 잠시 동안 이것을 알아 내려고 노력했다 ... 도와주세요! 여기 양식 인증 쿠키가 서버에서 지속되지 않음 LocalHost에서 수행

아래 몇 가지 코드 :

<forms name=".OPTFORMSTEST" loginUrl="~/Secure/Login.aspx" defaultUrl="~/Default.aspx" timeout="240" path="/" slidingExpiration="false" protection="All" /> 

Public Shared Function DoLogin(ByVal strUsername As String, ByVal isPersistent As Boolean) 
    Dim authTicket As FormsAuthenticationTicket 
    Dim authCookie As HttpCookie 
    Dim strUserData As String = strUsername 
    Dim intTimeoutPersist As Integer = 43200 '(30 days) 
    Dim intTimeoutNonPersist As Integer = 300 '(5 hours) 
    Dim intRtn As Integer = 1 
    Dim strCookiePath As String = Current.Request.Url.AbsolutePath.Remove(Current.Request.ApplicationPath.Length) 

    Try 
     'set cookie timout period and create auth ticket based on isPersistent 
     If isPersistent Then 
      'create a persistent ticket 
      authTicket = New FormsAuthenticationTicket(1, strUsername, _ 
       DateTime.Now(), _ 
       DateTime.Now.AddMinutes(intTimeoutPersist), _ 
       True, strUserData) 
     Else 
      'create a temp ticket 
      authTicket = New FormsAuthenticationTicket(1, strUsername, _ 
       DateTime.Now(), _ 
       DateTime.Now.AddMinutes(intTimeoutNonPersist), _ 
       False, strUserData) 
     End If 

     'create encrypted string for user data 
     Dim strEncr As String = FormsAuthentication.Encrypt(authTicket) 
     'create cookie 
     authCookie = New HttpCookie("OPTFORMSTEST", strEncr) 
     'set cookie expiration based on the auth ticket 
     If isPersistent Then 
      authCookie.Expires = authTicket.Expiration 
     End If 
     Current.Response.Cookies.Add(authCookie) 
    Catch ex As Exception 
     intRtn = -1 
    End Try 
    Return intRtn 
End Function 
+0

FYI : Chrome에서이 '쿠키 수정'확장 프로그램을 사용하여 실제 쿠키를 확인할 수 있습니다. 만료를 확인하여 자세한 정보를 얻으십시오. – Mitul

+0

LocalHost의 쿠키 만료 시간은 22/03/2013 12:58 PM (30 일)이지만 프로덕션 사이트의 쿠키는 26/02/2013 04:36 PM (로그인 시간에서 4 시간)에 만료됩니다. 4 시간은 web.config에 지정된 시간 초과 값과 일치합니다. 영구 만료가 무시되는 것 같습니다. – creativedave

+0

생산 상자의 web.config 파일에 문제가있는 것 같습니다. web.config 변환을 사용하고 있습니까? web.debug.config 및 web.release.config와 같은 – Mitul

답변

0

몇 번의 실험 후, 나는 생산 상자에서 사용될 때 같이 RedirectFromLoginPage 방법은 다른 쿠키를 만드는 것을 발견했다. Response.Redirect로 바뀌었고 하나의 쿠키 만 만들어졌으며 영구적이었습니다.

관련 문제