Asp.Net MVC 实现同一用户名不能同时登录(单点登录)

本文介绍了在Asp.Net MVC中如何实现单点登录,防止同一用户多次登录。主要通过记录用户ID和SessionID,当检测到重复登录时,更新SessionID并进行相应操作。步骤包括登录时记录信息、编写过滤器判断和Session过期后的资源释放。
摘要由CSDN通过智能技术生成

Web 项目中经常遇到的问题就是同一用户名多次登录的问题,网上有许多文章都有描述如何实现该功能,看过之后,想着自己也动手记录一下吧,这里是参考的原文地址:http://www.cnblogs.com/f23wangj/p/4984302.html

实现原理:在服务器端记录登录的用户ID+SessionID,当重复登录时,根据用户ID用新的SessionID替换掉旧的SessionID,在需要单用户登录的操作时就可以判断SessionID是否匹配,不匹配则证明有其他人登录了你的账户,这时可要求重新登录或其他的操作。

实现步骤:1、登录时记录登录的用户ID+SessionID,可利用Application、Cache、数据库等。

     2、写一个过滤器用于判断当前的用户ID和SessionID跟服务器记录的是否匹配以及不匹配时进行的操作。

       3、在Session过期或者退出系统时释放资源。

步骤一:验证账号密码后,调用下面的方法,用于存储用户ID和sessionID

private void GetOnline(string Name)
{
	Hashtable SingleOnline = (Hashtable)System.Web.HttpContext.Current.Application["Online"];
	if (SingleOnline == null)
		SingleOnline = new Hashtable();
	if (SingleOnline.ContainsKey(Name))
	{
		SingleOnline[Name] = Session.SessionID;
	}
	else
		SingleOnline.Add(Name, Session.S
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值