2017-03-24 1 views
0

일정 기간 사용하지 않으면 내 MVC 사이트를 시간 초과하려고합니다.비 활동 기간 후 제한 시간 초과 MVC 웹 사이트

나는 많은 것을 시도했지만 아무 것도 작동하지 않습니다. Web.config의에 양식을 인증 요소를 사용하여 CookieAuthenticationOptions 클래스

app.UseCookieAuthentication(new CookieAuthenticationOptions 
    { 
     ExpireTimeSpan = TimeSpan.FromMinutes(1), 
     AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
     LoginPath = new PathString("/xxx") 
    }); 

사용

을 :

<authentication mode="Forms" > 
    <forms loginUrl="~/xxxx" timeout="1"/> 
</authentication> 

을 또한 설정 파일 내에서 sessionState의를 사용 : 나는 다음 시도했다

<sessionState timeout="1"/> 

그러나 이들 중 아무 것도 작동하지 않는 것 같습니다.

내가 누락 된 부분은 무엇이며 가장 좋은 방법은 무엇입니까?

답변

0

먼저 세션 시간 초과 및 인증 시간 초과의 두 가지 개념이 있습니다. 즉, "웹 사이트 시간 초과"와 같은 것은 없습니다. 당신이 여기서 실제로 제어하려고하는 것을 알아야합니다. 다음으로 세션 시간 초과는 입니다.이므로 사용자가 웹 사이트를 적극적으로 사용하는 동안에는 세션 시간 제한이 적용되지 않습니다. 인증 시간 초과는 절대적이므로 지정된 시간이 지나면 사용자가 사이트를 적극적으로 사용하고 있는지 여부에 관계없이 로그 아웃됩니다.

인증 시간 제한에 관한 한 사실상 여기에는 두 가지 개념, 즉 신원 및 멤버쉽 (양식 인증)도 포함됩니다. 첫 번째 코드는 ASP.NET Identity에서 인증 시간 제한을 제어하는 ​​방법이며, 두 번째 코드는 ASP.NET 멤버 자격을 제어하는 ​​방법입니다. 이 두 가지는 상호 배타적이며 프로젝트가 실제로 사용하는 실제 인증 메커니즘과 일치해야합니다.

+0

답변 해 주셔서 감사합니다. 그래서 저는 두 가지를 혼합해서 사용하려고합니다. FormsAuthentication.SetAuthCookie 및 Response.SetCookie를 사용하여 10 시간 후에 만료되는 HttpCookie를 전달합니다. 그러나 웹 사이트를 30 분 동안 사용하지 않은 경우 세션의 시간 초과가 필요합니다. FormsAuthentication.SetAuthCookie 및 Response.SetCookie 부분은 세션 시간 초과를 제대로 처리하지 못하는 것 같습니다. – Sun

+0

필요한 것은''입니다. 사용자가 30 분 동안 완전히 비활성 상태이면 세션이 만료됩니다. 사용자는 * 완전히 * 비활성 상태 여야합니다. 웹 사이트 (AJAX 포함)에 대한 요청이 있으면 시간 초과가 재설정됩니다. –

+0

이것은 작동하지 않습니다. 나는 쿠키가 존재하기 때문에 다른 쿠키를 무시하고 사용자를 다시 로그인하기 때문에 쿠키를 추측하고 있습니다. – Sun