强制用户注销(force users to logout)

2019-10-29 07:02发布

目前,我有一个客户端和管理网页。 有多个用户谁将会登录到客户端页面。 而在管理页面,当我恢复了管理页面数据库里面,我需要全部注销谁正在登录到客户端页面的用户。 任何想法,应该怎么做? 我使用当前语言是传统的ASP。 如果它可以在ASP.NET,其优良的完成了。 谢谢。

Answer 1:

这真的取决于你什么缓存。 如果它的数据,那么你可以清除缓存数据,而不是迫使用户重新登录。

如果它的数据或权限/安全性的变化,那么你可以在你的数据库称为SchemaVersion存储数据库的当前版本的设置。 每个登录的用户请求的应用程序可以比较反对一个在数据库中的Cookie /会话版本,如果它不同于获取客户端删除会话/ cookie,并强制重新登录。

据微软的帮助文章,你可以重置会话是这样的:

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

而从MSDN您可以清除您的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缓存来存储数据库架构版本:

在页面加载的开始调用一个辅助类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为真,则继续正常

如果是假的,然后调用LoginResetHelper.ResetLogin()和重定向到登录页面。

ResetLogin()应执行我上面提到的结算功能



Answer 2:

也许最简单的方法是定义一个Application ,通过服务器端包含在正在维修,表明你的网站的变量,并在每一个页面上,检查变量和重定向到相应的错误页面。



文章来源: force users to logout