目前我有一个客户端和管理员网页。有多个用户将登录到客户端页面。在管理页面中,当我在管理页面中恢复数据库时,我需要注销当前登录到客户端页面的所有用户。有什么想法应该怎么做?我目前使用的语言是经典ASP。如果它可以在ASP.NET中完成,那也很好。感谢。
答案 0 :(得分:2)
这真的取决于你缓存的内容。如果是数据,则可以清除缓存的数据,而不是强制用户再次登录。
如果它的数据或权限/安全性发生了变化,那么您可以在数据库中设置名为SchemaVersion的设置,该设置存储当前版本的数据库。每个登录到应用程序的用户请求都可以将cookie /会话版本与数据库中的版本进行比较,如果它不同,则让客户端删除会话/ cookie并强制重新登录。
根据Microsoft帮助文章,您可以reset the session这样:
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
从MSDN您可以clear your cookie这样:
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);
}
这应该强制登录,但我自己也没有证实。
总而言之,您可以使用ASP.NET Cache来存储db模式版本,并且:
在页面加载时,调用帮助程序类LoginResetHelper.IsDbValid()
以查看是否需要再次登录
在辅助课程中你会问
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;
如果IsDbValue为true,则继续正常
如果为false,则调用LoginResetHelper.ResetLogin()
并重定向到登录页面。
在ResetLogin()
中,您将执行我上面提到的清算功能
答案 1 :(得分:0)
最简单的方法是定义一个Application
变量,表明您的网站处于维护状态,并且在每个页面中通过服务器端包含,检查该变量并重定向到相应的错误页面。