폼 인증 시간 초과 vs sessionState 시간 초과


139

웹 사이트의 세션 시간 초과와 관련하여 찾고있는 코드가 있습니다. web.config 에서이 코드를 발견했습니다.

 <authentication mode="Forms">
  <forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>

<sessionState timeout="30" />

어느 쪽이 다른 쪽보다 우선하는지, 그리고 어떻게 다른지 아는 사람이 있습니까? 감사.


답변:


226

그들은 다른 것입니다. Forms Authentication Timeout 값은 인증 쿠키가 유효하도록 설정된 시간 (분)을 설정합니다. 즉, value분 후에 쿠키가 만료되고 사용자가 더 이상 인증되지 않으며 로그인으로 리디렉션됩니다. 자동으로 페이지. 이 slidingExpiration=true값은 기본적으로 사용자가 시간 초과 값 내에서 요청하는 한 계속 인증됩니다 (자세한 내용은 여기 참조 ). slidingExpiration=false인증 쿠키 를 설정 하면 value사용자가 제한 시간 내에 요청하는지 여부에 관계없이 몇 분 후에 인증 쿠키가 만료됩니다 .

SessionState타임 아웃 값을 설정하여 특정 세션 (보조 저장 장치가 사용되는 어떤 또는 SQL 서버 OutOfProc 등) 세션 상태 제공자는 메모리에 유지 된 데이터에 요구되는 시간. 예를 들어 예제의 값을 사용하여 세션에 개체를 넣으면이 데이터는 30 분 후에 제거됩니다. 사용자는 여전히 인증을 받았지만 세션의 데이터가 더 이상 존재하지 않을 수 있습니다. Session Timeout값은 항상 모든 요청 후 재설정됩니다.


26
하나 설명 : 폼 인증 시간 제한이의 만료 시간 설정 티켓을 티켓이 저장 될 수 쿠키 필요는 없다. 쿠키에는 만료 시간이 전혀 없을 수 있거나 (세션 쿠키라고도합니다. 즉, 사용자가 브라우저를 닫을 때까지 지속됨) 쿠키가 전혀 없을 수도 있습니다 ( "쿠키리스"폼 인증). 영구 쿠키의 경우 양식 인증은 쿠키 만료와 티켓 만료를 동시에 설정합니다.
bmode

13
MSDN의 또 다른 설명 : "성능 저하를 방지하고 쿠키 경고를 설정 한 사용자에 대해 여러 브라우저 경고를 피하기 위해 지정된 시간의 절반 이상이 경과하면 쿠키가 업데이트됩니다." 따라서 쿠키 시간 초과는 절반 이상인 경우에만 재설정됩니다. 따라서 세션 시간 초과의 2 ​​배로 설정하라는 제안입니다.
user917170

21

slideExpiration = true 값은 기본적으로 모든 요청이 완료된 후 타이머가 재설정되고 사용자가 시간 초과 값 내에 요청하는 한 계속 인증된다고 말합니다.

이것은 정확하지 않습니다. 시간 제한 시간의 절반이 지나면 인증 쿠키 시간 제한이 재설정됩니다.

예를 들어 https://support.microsoft.com/de-ch/kb/910439/en-us 또는 https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session을 참조하십시오. 타임 아웃 /


18

내가 이해 한 바에 따르면 그들은 서로 독립적입니다. 세션 시간 초과를 인증 시간 초과 이하로 유지하면 인증 시간이 초과 된 후에도 사용자 별 세션 변수가 유지되지 않도록 할 수 있습니다 (관심 사항이있는 경우이 질문을 할 때 정상적인 것으로 생각됩니다) 질문). 물론 로그 아웃시 세션 변수 처리를 수동으로 처리해야합니다.

다음은 귀하의 질문에 답변하거나 최소한 올바른 방향으로 귀하를 가리킬 수있는 적절한 답변입니다.


7

차이점은 하나 (양식 시간 제한)가 사용자 인증과 관련이 있고 다른 하나 (세션 시간 제한)가 캐시 된 데이터가 서버에 저장되는 시간과 관련이 있다는 것입니다. 따라서 그것들은 매우 독립적 인 것이므로, 하나는 다른 것보다 우선하지 않습니다.


5
      <sessionState timeout="2" />
      <authentication mode="Forms">
          <forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/>
      </authentication>

이 구성은 2 분마다 로그인 페이지로 보내는데, 이전 답변을 논란하는 것처럼 보입니다.


1
로그인 관련 정보가 세션 변수에 저장되어 있고 지워지면 로그인으로 리디렉션 될 수 있습니다. 코드에 따라 다릅니다.
Steve

0

이 질문에 걸려 넘어지는 사람은 MS의이 문서를 참조하십시오. FormsAuthentication Timeout 설정에 대한 자세한 내용이 있습니다.

이 문서는 bmode가 허용되는 답변-영구 쿠키에 대한 의견 (세션 대 만료)에 대해 자세히 설명합니다.

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-security/introduction/forms-authentication-configuration-and-advanced-topics-cs#specifying-the-tickets- 타임 아웃 값

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.