0

몇 가지 값을 저장하기 위해 세션을 사용하고 있는데 제대로 작동합니다. 이 값이 null 일 때 이것을 처리해야합니다. 일반적으로 값은 사이트를 처음 방문 할 때 로그인 페이지에서 설정됩니다.세션 및 인증에 혼란이 있음

1 .. 세션이 만료되었는지 확인하려면 인증을 확인해야합니까? How to Check whether Session is Expired or not in asp.net

회신이 같은 목적을 위해 세션 및 IsAuthenticated는을 사용하고 있습니다 : 나를 혼동 무엇

이 게시물이었다.

2 .. 인증에서 세션을 사용합니까? 아니면 동일한 인증을 사용합니까?

3 .. 해당 브라우저 창에 대해 세션 ID가 만료되거나 변경됩니까?

나는 브라우저 아이디가 브라우저 페이지를 열 때 만들어 졌음을 알았습니다. 적어도 이것을 가정합니다. 그래서 내가 잘못하면 나를 바로 잡아주세요.

4 .. 세션 변수가 유효한지 확인하기 위해 인증 된 것인지 확인합니까?

if (!HttpContext.User.Identity.IsAuthenticated) 
    { 
    Logging.WriteLog("User.Identity.Authenticated returned false"); 
    return RedirectToAction("Logon", "Account"); 
    //return View("Logon"); 
    } 

5 .. 내가 올바른 생각을 가지고 수행

나는 그들이가 인증하면 내가 세션 변수가 유효한지 확인하려면 각각의 컨트롤러 방법 해낸 것입니다 ?

제발 좀 도와주세요!

+0

어떤 종류의 인증 메커니즘을 사용하고 있습니까? –

+0

Sry, SqlMembershipProvider를 추가했습니다. – ErocM

답변

1

ASP.NET Session은 고유 한 사용자/브라우저 ID를 기반으로하며 쿠키로 설정됩니다. 세션은 사용자의 전체 브라우징 세션 동안 유효해야합니다. 사용자가 브라우저를 닫으면 해당 쿠키가 제거되고 세션은 끝납니다. 인증 프로세스 동안 값을 확실히 설정하거나 제거 할 수 있지만 사용중인 인증과는 별도입니다.

+0

"세션은 사용자의 전체 탐색 세션에서 유효해야합니다." - 꼭 그런 것은 아닙니다. 사용자가 브라우저를 닫지 않아도 비활성 상태 인 경우 구성 가능한 시간 초과 후 세션이 만료됩니다. InProc 세션을 사용하는 경우 AppDomain이 서버에서 재활용되면 세션이 손실됩니다. – Joe

+0

오른쪽. 나는 Session이 무엇인지를 단순화했다. –

1

ASP.NET에서 Session은 인증과 완전히 독립적입니다.

폼 인증을 사용하는 경우 폼 인증 티켓은 세션 쿠키와는 아무런 관련이없는 폼 인증 쿠키에 저장됩니다.

일반적으로 특히 InProc 세션을 사용하는 경우 언제든지 세션이 만료 될 수 있다고 가정하는 것이 가장 좋습니다. AppDomain이 서버에서 재활용 되었기 때문입니다.

null을 테스트하고 이상이없는 경우 데이터베이스와 같은 영구 저장소에서 Session 개체를 다시 만드는 것이 이상적입니다. 이것이 불가능할 경우 사용자를 방문 페이지로 리디렉션하고 다시 시작해야합니다.

+0

데이터베이스를 사용하여 정보를 어떻게 저장합니까? SessionId를 사용할 수없는 경우 사용자를 데이터베이스의 레코드에 묶으려면 어떻게해야합니까? – ErocM