首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • ?防止用户重复登录,代码怎么写呢? [已结贴,结贴人:chenjianwei2046]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 21:05:31 楼主
    本人出学小菜鸟,目前在学习作网站,如何防止一个用户重复登录呢?(c#)
    高手们帮个忙给段代码,希望能详细点,网上搜的没什么说明看不大懂,谢谢啦。
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 21:11:291楼 得分:0
    重复登陆又没关系的

    难道不让用户登陆
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mqcan
    • 等级:
    发表于:2008-05-11 21:12:322楼 得分:0
    利用cache
    C# code
    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(""); }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 21:14:263楼 得分:20
    单用户登陆吧?
    就是后者要把前者踢下线来.
    我很早很早以前做过.2001年左右的时候.
    用户登陆以后生成一个GUID(SESSION ID就可以了),按照和用户名1对1的关系,放在数据库里或者放在内存里.再把这个GUID写到客户端隐藏区域去.
    用户每次请求都拿这个GUID来作为身份票.
    第二个人登陆了,前一个人的GUID肯定就无效了.但是不能踢下来.
    第一个人再请求的时候,相当于是自己把自己踢下来了.
    原来就是这样.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 21:15:134楼 得分:0
    防止用户重新登陆??你登录后把登录的控件都隐藏掉就是了...最简单的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 21:20:535楼 得分:0
    頂2樓
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 21:22:086楼 得分:0
    也可以在数据库中建一个字段,用户要是登陆了啊,就改为1要是没有登陆就是0
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 21:46:337楼 得分:0
    除了"后者把前者踢下线"比较可行外,别的没发现什么完美的方案,期待牛人解答
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • skyaspnet
    • 等级:
    发表于:2008-05-11 22:17:288楼 得分:0
    [Quote=引用 2 楼 mqcan 的回复:]
    利用cache

    C# code
    Cstring 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(""); }
    [/Quote]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 12:34:589楼 得分:0
    - -!不好意思分给错了!给2楼的结果给到3楼了!
    这里只能谢谢2楼了!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved