웹 사이트의 세션 시간 초과와 관련하여 찾고있는 코드가 있습니다. web.config 에서이 코드를 발견했습니다.
<authentication mode="Forms">
<forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>
<sessionState timeout="30" />
어느 쪽이 다른 쪽보다 우선하는지, 그리고 어떻게 다른지 아는 사람이 있습니까? 감사.
답변
그들은 다른 것입니다. Forms Authentication Timeout 값은 인증 쿠키가 유효하도록 설정된 시간 (분)을 설정합니다. 즉, value
분 후에 쿠키가 만료되고 사용자가 더 이상 인증되지 않으며 로그인으로 리디렉션됩니다. 자동으로 페이지. 이 slidingExpiration=true
값은 기본적으로 사용자가 시간 초과 값 내에서 요청하는 한 계속 인증됩니다 (자세한 내용은 여기 참조 ). slidingExpiration=false
인증 쿠키 를 설정 하면 value
사용자가 제한 시간 내에 요청하는지 여부에 관계없이 몇 분 후에 인증 쿠키가 만료됩니다 .
SessionState
타임 아웃 값을 설정하여 특정 세션 (보조 저장 장치가 사용되는 어떤 또는 SQL 서버 OutOfProc 등) 세션 상태 제공자는 메모리에 유지 된 데이터에 요구되는 시간. 예를 들어 예제의 값을 사용하여 세션에 개체를 넣으면이 데이터는 30 분 후에 제거됩니다. 사용자는 여전히 인증을 받았지만 세션의 데이터가 더 이상 존재하지 않을 수 있습니다. Session Timeout
값은 항상 모든 요청 후 재설정됩니다.
답변
slideExpiration = true 값은 기본적으로 모든 요청이 완료된 후 타이머가 재설정되고 사용자가 시간 초과 값 내에 요청하는 한 계속 인증된다고 말합니다.
이것은 정확하지 않습니다. 시간 제한 시간의 절반이 지나면 인증 쿠키 시간 제한이 재설정됩니다.
예를 들어 https://support.microsoft.com/de-ch/kb/910439/en-us 또는 https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session을 참조하십시오. 타임 아웃 /
답변
내가 이해 한 바에 따르면 그들은 서로 독립적입니다. 세션 시간 초과를 인증 시간 초과 이하로 유지하면 인증 시간이 초과 된 후에도 사용자 별 세션 변수가 유지되지 않도록 할 수 있습니다 (관심 사항이있는 경우이 질문을 할 때 정상적인 것으로 생각됩니다) 질문). 물론 로그 아웃시 세션 변수 처리를 수동으로 처리해야합니다.
다음은 귀하의 질문에 답변하거나 최소한 올바른 방향으로 귀하를 가리킬 수있는 적절한 답변입니다.
답변
차이점은 하나 (양식 시간 제한)가 사용자 인증과 관련이 있고 다른 하나 (세션 시간 제한)가 캐시 된 데이터가 서버에 저장되는 시간과 관련이 있다는 것입니다. 따라서 그것들은 매우 독립적 인 것이므로, 하나는 다른 것보다 우선하지 않습니다.
답변
<sessionState timeout="2" />
<authentication mode="Forms">
<forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/>
</authentication>
이 구성은 2 분마다 로그인 페이지로 보내는데, 이전 답변을 논란하는 것처럼 보입니다.
답변
이 질문에 걸려 넘어지는 사람은 MS의이 문서를 참조하십시오. FormsAuthentication Timeout 설정에 대한 자세한 내용이 있습니다.
이 문서는 bmode가 허용되는 답변-영구 쿠키에 대한 의견 (세션 대 만료)에 대해 자세히 설명합니다.