首页 新闻 会员 周边

急,asp.net 用户登录的问题

0
悬赏园豆:10 [已解决问题] 解决于 2012-07-13 14:27

我目前实现的是,使用用户名和密码可以正常登录,但是多个用户可以使用同一个用户名和密码同时登录,如何实现一个用户名和密码只能让一个用户登录呢?比如说A用户使用用户名名和密码登录之后,这时B用户再使用用户名和密码登录时,强迫A下线 然后B正常登录。谢谢大家先

study_hard_01的主页 study_hard_01 | 初学一级 | 园豆:126
提问于:2012-07-04 11:55
< >
分享
最佳答案
0

http://www.cnblogs.com/heaiping/archive/2010/01/19/1651835.html

看下这篇博文吧,正好是你想知道的。

收获园豆:4
林J | 菜鸟二级 |园豆:202 | 2012-07-04 15:37

嗯 我正在仔细看这篇博文

study_hard_01 | 园豆:126 (初学一级) | 2012-07-04 16:53
其他回答(4)
0

看 你是什么样的系统。bs cs?

收获园豆:1
無限遐想 | 园豆:3740 (老鸟四级) | 2012-07-04 12:09

嗯。我也刚看到。你可以在db中,设置一个 用户是否登录,并且记录登录的sessionid,如果相等,表示,是自己,如果不是自己。就跳到登录界面。

支持(1) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-07-04 12:25

 我在数据库中是有设置一个字段 来判断该用户是否是在线或者离线(isonline),当用户登录成功后设置其值为ture 当用户退出时设置其为false 但是如果用户异常退出 那么isonlie的值就得不到改变,依然是true,那么就会对下次登录有影响,不知道有其他方法是否可以解决,谢谢您;

 还有 可以具体说一下 使用sessionid的用法吗?谢谢

支持(0) 反对(0) study_hard_01 | 园豆:126 (初学一级) | 2012-07-04 14:10

@study_hard_01: 可以定一个另一个栏位,里面存储时间,每次操作就刷新这个时间。如果 这个时间和当前时间 差的大于一定的时间,就认为是客户已经登出。关于sessionid,你可以google一下。应该很多。

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-07-04 14:21
0

1,cs:在登录用户表添加又给登录状态吧【在线/离线】 每次登录的时候判断一下,然后做相应的措施

2,BS:灵活使用Session 也可以参考1的!

收获园豆:2
Angkor--:-- | 园豆:1086 (小虾三级) | 2012-07-04 12:14

Sorry,没有看到asp.net 用户登录的问题 呵呵!

支持(0) 反对(0) Angkor--:-- | 园豆:1086 (小虾三级) | 2012-07-04 12:15

 我在数据库中是有设置一个字段 来判断该用户是否是在线或者离线(isonline),当用户登录成功后设置其值为ture 当用户退出时设置其为false 但是如果用户异常退出 那么isonlie的值就得不到改变,依然是true,那么就会对下次登录有影响,不知道有其他方法是否可以解决,谢谢您;

 还有 可以具体说一下 使用sessionid的用法吗?谢谢

支持(0) 反对(0) study_hard_01 | 园豆:126 (初学一级) | 2012-07-04 14:09

@study_hard_01:  设置Session的有效时间,一定时间内,没有操作,那就Session失效!

至于Session如何使用,找资料吧!!

支持(0) 反对(0) Angkor--:-- | 园豆:1086 (小虾三级) | 2012-07-04 14:18
1

使用Session.SessionID可以区别出用户A和用户B

收获园豆:2
zhangweiwen | 园豆:904 (小虾三级) | 2012-07-04 12:26

可以具体说一下 使用sessionid的用法吗?谢谢

支持(0) 反对(0) study_hard_01 | 园豆:126 (初学一级) | 2012-07-04 14:10

@study_hard_01: 

1.Session.SessionID就一个静态属性,还有什么用法可言??

2.你的问题就是保存一个全局的字典值,Key是用户名,Value是SessionID,验证身份时是判断一下SessionID是否相同就OK.登录时维护这个字典值.

支持(1) 反对(0) zhangweiwen | 园豆:904 (小虾三级) | 2012-07-04 14:28

@zhangweiwen:您好,感谢您的耐心解答,我是初学者 对问题理解的还是不太透彻,可以具体的列出相关代码吗?谢谢您

支持(0) 反对(0) study_hard_01 | 园豆:126 (初学一级) | 2012-07-04 14:59

@study_hard_01: 

1.public static Dictionary<string, string> AllLoginUsers = new Dictionary<string, string>();

2.登陆:

if (LoginSuccess)
{
if (AllLoginUsers.Any(u => u.Key == userName))
AllLoginUsers.Remove(userName);

AllLoginUsers.Add(userName, Session.SessionID);
}

3.验证身份时:

//你原來驗證成功後
var loginUser = AllLoginUsers.FirstOrDefault(u => u.Key == userName);
if (loginUser != null && loginUser.Value != Session.SessionID)
return userName + "已經在別處登陸!";

支持(1) 反对(0) zhangweiwen | 园豆:904 (小虾三级) | 2012-07-04 15:20
0

如果是BS模式,可以考虑记录用户MAC,实现单点登陆。

收获园豆:1
李晓忠 | 园豆:207 (菜鸟二级) | 2012-07-04 14:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册