2010-01-15 6 views
0

현재 클라이언트 및 관리자 웹 페이지가 있습니다. 클라이언트 페이지에 로그인 할 사용자가 여러 명 있습니다. 관리자 페이지에서 데이터베이스를 관리자 페이지로 복원 할 때 현재 클라이언트 페이지에 로그인 한 모든 사용자를 로그 아웃해야합니다. 그것이 어떻게 이루어져야한다는 아이디어가 있습니까? 현재 사용하는 언어는 고전적인 ASP입니다. 그것이 ASP.NET에서 잘될 수 있다면, 그것도 괜찮아. 감사.강제로 사용자 로그 아웃

+0

위에서 언급 한 청산 기능을 수행 할 ResetLogin()에서

당신은에 로그인 할 때 강제 당신은 그들이 로그 아웃하고 다시 로그인하거나 그들과 함께 편안해야 페이지 내 사용자에게 통지 할 건가요 다음에 웹 사이트의 페이지로 이동합니까? – Jacob

답변

0

가장 쉬운 방법은 유지 관리중인 웹 사이트를 나타내는 Application 변수를 정의하고 서버 쪽 포함을 통해 모든 페이지에서 변수를 확인하고 해당 오류 페이지로 리디렉션하는 것일 수 있습니다.

+0

충분히 설명하지 못해 죄송합니다. 로그 아웃의 이유는 관리자가 데이터베이스를 복원 한 후에 최신 정보를 얻는 것입니다. 모든 내 세션을 사용하기 때문에 모든 사용자를 로그 아웃하고 모든 세션 변수를 재설정해야합니다. – lipkee85

2

정말 캐시 한 내용에 따라 다릅니다. 데이터의 경우 사용자가 다시 로그인하지 않고 캐시 된 데이터를 지울 수 있습니다.

데이터 또는 사용 권한/보안이 변경되는 경우 데이터베이스의 현재 버전을 저장하는 SchemaVersion이라는 데이터베이스 설정이있을 수 있습니다. 앱에 로그인 한 각 사용자 요청은 쿠키/세션 버전을 데이터베이스의 버전과 비교할 수 있으며, 쿠키/세션 버전을 비교하여 클라이언트가 세션/쿠키를 삭제하고 다시 로그인하도록하는 것과 다를 수 있습니다. MSDN에서 당신이 할 수있는 clear your cookie이 같은

Session.Abandon(); 
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); 

그리고 : 마이크로 소프트 도움말과 같이 할 수 있습니다 reset the session에 따르면

if (HttpContext.Current.Request.Cookies["MyCookieName"] != null) 
{ 
    HttpCookie aCookie = HttpContext.Current.Request.Cookies["MyCookieName"]; 
    aCookie.Expires = DateTime.Now.AddDays(-10); 
    aCookie.Value = ""; 
    HttpContext.Current.Response.Cookies.Add(aCookie); 
} 

이것은 로그인을 강제해야하지만, 내가하지 나 자신을 확인했다. 우리가 다시

로그인 할 필요가 있는지 확인하기 위해 헬퍼 클래스를 LoginResetHelper.IsDbValid()를 호출 페이지로드의 시작에서

:

그래서 요약, 당신은 DB 스키마 버전을 저장하기 위해 ASP.NET 캐시를 사용할 수 있습니다 IsDbValue가 true의 경우는 false의 경우 헬퍼 클래스에서

당신이이

정상적으로 계속

if (Cache["SchemaVersion"] == null) 
{ 
    // retrieve schemaVersion from db 

    Cache.Add("SchemaVersion", schemaVersion); 
} 
HttpCookie oCookie = new HttpCookie("ClientSchemaVersion"); 
if (Cache["SchemaVersion"] == oCookie.Value) 
    return true; 
return false; 

물어 것, 다음에 전화 LoginResetHelper.ResetLogin()을 입력하고 로그인 페이지로 리디렉션하십시오. 당신은 내가

+0

각 페이지 요청마다 데이터베이스에 연결하여 쿠키/세션을 검색하고 비교해야합니까? 나는 데이터베이스와 연결하지 않고 선호하며 사용자의 로그 아웃을 강제합니다. – lipkee85

+0

SchemaVersion 값을 캐시에 저장할 수 있으므로 매번 db를 호출 할 필요가 없습니다. 업데이트 할 수있는 페이지 만 있으면됩니다. 그런 식으로 db를 변경하면 웹 페이지를 호출하고 변수가 재설정됩니다. – Ezz

+0

하지만 위의 리셋 세션 방법은 다른 사용자가 자신의 컴퓨터를 사용하여 로그인 할 때 작동합니까? 내가 아는 바와 같이 쿠키/세션은 자체 컴퓨터에 저장되므로 쿠키/세션을 지우려면 컴퓨터를 과다 사용하여 지울 필요가 있습니다.내가 맞습니까? – lipkee85