高手请进----提问加散分 1>怎么样实现用户的重复登陆。现在的要求是如果一个用户登陆后,有其他用户使用其ID登陆,则需要报警。并立刻锁住这个帐号一段时间。现在的难点就出在了怎么能及时判断这个用户是在线的。2>怎么样防止用户在短时间内频繁试密码?在页面上记录次数不行。因为可以关闭页面另开了再试的。 希望大家能够共享一下自己的心得和好的方法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1:研究下SSO2:超过次数后记录其IP,禁止当天再访问 (1)这个问题讨论过很多次了。在web中,没有很准确的解决这个问题的方法!大都是一个大概的。(2)第二个问题,用户访问站点时给一个零时的游客id,然后记录他登陆错误的次数,大概差不多可以解决你的问题。 1.用application..可以判断是否在线.2.用文本记录或数据库记录一下..后做判断... 用这个你自己改改 忘了 是收集谁的代码了 你看看吧------------------------要防止同一用户同时登陆,首页应该记录在线用户的信息(这里与用户名为例),然后判断正在登陆的用户里面是否已存在。在这里使用一个cache存放已经登陆的用户名,但是还有一个问题就是要知道用户是什么时候离开系统的呢?这就要定期清除cache中的内容了,也就是设置一个cache的时间。这个时间可以跟用户的session值联系起来,刚好当用户session值失效的时候该用户在cache里面的信息也会被清空.这样就达到了防止同时登陆的效果,具体代码如下: 放在登陆成功的地方:string key = TextBox1.Text; //用户名文本框设为cache关键字 string uer = Convert.ToString(Cache[key]); //读取cache中用户相应的值//判断cache中是否有用户的信息,如果没有相关的值,说明用户未登陆if (uer == null || uer == String.Empty){ //定义cache过期时间 TimeSpan SessTimeout = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0); //第一次登陆的时候插入一个用户相关的cache值, HttpContext.Current.Cache.Insert(key, key, null, DateTime.MaxValue, SessTimeout, System.Web.Caching.CacheItemPriority.NotRemovable, null); Session["ADMINID"] = TextBox1.Text; Response.Redirect("main.aspx");}else{ //重复登陆 Response.Write("<script>alert('您的账号已经登陆!');window.location='login.aspx';</script>");} 在数据库里加一字段IsOnline(Bool),当用户登录时,写为True,退出时,写为False,这样用户登录时就可以判断了,以前做过在线考试系统时,也出现过类似的情况 用Cache?最不稳定的就是它了,IIS是会自动强制清除的。Web程序里做这个效果是非常难的,因为非常难判断一个用户是否退出。 jf1,Cache;application;数据库记录状态.2,验证码;数据记录当天登录次数,做个batchjob零点时登录次数清. 关于第二个可不可以从cook里面判断呢 第一个问题:我知道现在在这个方面是有难度的。google都没有很好的实现。现在一般不都认为,google没有实现的功能在现阶段是无法实现的。只是希望大家能够通过讨论得到一个现阶段的一个比较好的。第二个问题:肯定是可以解决的。但是如果用页面记数,那么重新打开页面就不行了 用图形验证。这个肯定是要加的。但不能更本解决这个问题。 用cook ,很容易被恶意修改。而且很有可能可户端关闭了这个。 放数据库中。时间是个问题。我的要求是在一段时间内不能过多的尝试登陆。而且我在数据库中无法实现来分辨尝试登陆的是在一个客户端上啊。 1。我选择数据库记录登陆信息,客户端通过 AJAX 隐藏刷新,若超过时间得不到客户端请求,则从数据库清除此记录当然,还是无法精确2。记录次数呗,锁定的时候,记录最后一次尝试时间,下次尝试登陆的,与此时间判断 cookie+数据库放一个状态字段+加定时读取在线状态 文件路径问题 服务端获取 用户IP,速战速结贴 gridview自定义控件 关于分页的写法 javascript传值的问题 datagrid多个checkbox 高手进!急!! 简单问题,希望看一下,担搁一下几秒钟 框架代码求助 写的datagrid里绑定dropdownlist还是有问题:(麻烦大家帮我看看 用C#开发window应用程序和ASP。NET WEB应用程序中DataGird控件的用法有什么区别? 诚聘有一定经验\有意在.net方向发展的程序员/系统分析员 你有理想么,你有资金么,你有技术么,为什么要打工呢?? 高分求biztalk server2006中文版下载地址~~
2:超过次数后记录其IP,禁止当天再访问
string uer = Convert.ToString(Cache[key]); //读取cache中用户相应的值
//判断cache中是否有用户的信息,如果没有相关的值,说明用户未登陆
if (uer == null || uer == String.Empty)
{
//定义cache过期时间 TimeSpan SessTimeout = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0); //第一次登陆的时候插入一个用户相关的cache值,
HttpContext.Current.Cache.Insert(key, key, null, DateTime.MaxValue, SessTimeout, System.Web.Caching.CacheItemPriority.NotRemovable, null);
Session["ADMINID"] = TextBox1.Text;
Response.Redirect("main.aspx");
}
else
{
//重复登陆
Response.Write("<script>alert('您的账号已经登陆!');window.location='login.aspx';</script>");
}
1,Cache;application;数据库记录状态.
2,验证码;数据记录当天登录次数,做个batchjob零点时登录次数清.
可不可以从cook里面判断呢
用图形验证。这个肯定是要加的。但不能更本解决这个问题。
用cook ,很容易被恶意修改。而且很有可能可户端关闭了这个。 放数据库中。时间是个问题。我的要求是在一段时间内不能过多的尝试登陆。而且我在数据库中无法实现来分辨尝试登陆的是在一个客户端上啊。
我选择数据库记录登陆信息,客户端通过 AJAX 隐藏刷新,
若超过时间得不到客户端请求,则从数据库清除此记录
当然,还是无法精确2。
记录次数呗,锁定的时候,记录最后一次尝试时间,
下次尝试登陆的,与此时间判断