我基本上想在我的LogOn
操作中设置一个条件语句来查看用户名,并确定该用户名已经登录。
此时应通知用户。
该帐户已登录,如果您认为自己已被劫持...yada yada yada。
我想我可以在这个条件之后添加一些东西,是否已经有像我编写的方法 Membership.CheckIfUserIsOnline(string username)
那样的东西了?
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
//See the line below, I made this method up.
if (Membership.CheckIfUserIsOnline(model.UserName){
ModelState.AddModelError("", "Someone else is logged into this account.");
}
最佳答案
如果您使用 session 状态,我将存储(最好在应用程序范围的缓存中或在应用程序数据库中)以用户 ID 为键的记录,存储 session ID。
然后,当您要检测多次登录时,请根据当前 session ID 检查已登录的用户 ID。如果数据库中存储的 session ID 与当前 session 的 session ID 不匹配,则可能表示多次登录。
您必须处理数据存储中的值过期(这就是应用程序范围的缓存可能比应用程序数据库更好的原因)以及 session 的正常终止(注销时),但如果您只是用它来提醒用户,这可能就足够了。
关于asp.net-mvc-3 - 如何阻止同一用户在另一台计算机上登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6751557/