我正在使用 FormsAuthentication mechanizm和auth用户
FormsAuthentication.SetAuthCookie(...);
我能否以某种方式从所有浏览器 退出当前用户?
答案 0 :(得分:1)
在认证参数中添加guid参数。还要将guid保存到会话表中,例如像这样;
public class sessionLog
{
public int UserID { get;set;}
public string Guid {get;set;}
// ... may be you can add IP, datetime or isSessionClosed etc
}
登录时向表中添加一行,将guid保存在cookie中。 使用userID检查用户身份验证,并启用guid。
使用guid删除行注销,或使用userID删除all以关闭所有会话。
答案 1 :(得分:1)
从技术上讲,这是不可能的。用户通过浏览器中设置的加密cookie进行身份验证。将用户注销只会使该cookie无效。然后,无法使其他浏览器甚至其他计算机中可能存在的cookie无效。
您可能实现此类目标的唯一方法是以某种方式指示与用户帐户相关联,即已注销。这可能是您的配置文件表或其他类型的持久存储介质上的附加列。无论您做什么,当经过身份验证的用户访问您网站的某些部分时,您都需要查看此信息。如果它们先前已经注销,那么您将在该浏览器/机器实例上再次注销它们。当他们再次登录时,您将清除之前设置的内容,以便他们保持身份验证。换句话说,当用户尝试从该浏览器访问该站点时,您必须检查并使每个浏览器中的auth cookie无效。在用户从该特定浏览器访问您的网站之前,无法执行任何操作。
答案 2 :(得分:0)
您需要存储登录到应用程序变量的用户列表。如果具有该Guid的用户尝试再次登录,您可以显示他们已经在其他地方登录的消息....
我认为您无法在授予用户会话后控制用户会话,但如果尝试从其他地方登录,您可以添加逻辑以拒绝访问功能(我不确定您为什么要这样做这样做是因为从不同的设备登录并不总是恶意地进行。)