CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

怎样实现单点登录?

楼主c9cad(c9cad)2005-06-01 10:12:57 在 .NET技术 / C# 提问

各位大虾。我想了很久也不明白,希望能有朋友指点迷津。  
  =====================================================  
  就是在域里面,同一时间,只能有一个帐号登录,也就是说,一个帐号正在使用,别人就不能使用。 问题点数:100、回复次数:13Top

1 楼wls12342004(青青子木)回复于 2005-06-01 10:17:46 得分 0

upTop

2 楼3tzjq(永不言弃)回复于 2005-06-01 10:19:08 得分 30

我是这样解决的:  
  用户数据表:users   添加个字段:在线状态   bit    
   
  然后当某用户登录成功后,随便更新'在线状态'=1,注销时更新'在线状态'=0,  
  其它计算机用户登录时,判断当前用户的'在线状态',为1时就不允许登录。Top

3 楼3tzjq(永不言弃)回复于 2005-06-01 10:19:40 得分 0

随便   >>   顺便Top

4 楼zhongwanli(㊣【为了老婆,二次重构____然后升★★】㊣)回复于 2005-06-01 10:26:00 得分 10

楼上的解决方案可以。  
   
  不过,我想应该有其他的。  
   
  只是我还不知道。Top

5 楼time_is_life(今夜太冷:http://timeislife.blog.sohu.com)回复于 2005-06-01 10:26:09 得分 0

楼主说的情况根本不是单点登录,不要乱用概念  
   
  http://www.microsoft.com/china/msdn/library/webservices/asp.net/singlesignon.mspx  
   
  Top

6 楼zhongwanli(㊣【为了老婆,二次重构____然后升★★】㊣)回复于 2005-06-01 10:26:18 得分 0

帮楼主顶一下Top

7 楼wh8254(租个老婆结婚~~)回复于 2005-06-01 10:33:06 得分 10

如果是b/s的程序,如果不在数据库中设一个字段来标记的话,是没有办法控制的Top

8 楼khpcg(欢乐英雄)回复于 2005-06-01 10:59:27 得分 10

单点登陆好象是说一次登陆的意思啊,这里说的好象是只能有一个用户登陆啊Top

9 楼time_is_life(今夜太冷:http://timeislife.blog.sohu.com)回复于 2005-06-01 11:02:39 得分 40

用数据表实时性不是很好,要总刷新,数据库压力大  
  如果程序出错,比如操作数据库失败,就不准确了  
   
  用Application比较好,但是频繁操作Application会对网站的性能有影响  
   
  最好的办法就是设置一个静态变量  
  asp.net的静态变量就是为了干这个的  
  因为静态变量是类的全部实例共享的  
   
  我用这种方法写了一段代码,这段代码是适用于windows验证的情况,代码编译通过,我没有测试,但是道理是这样的。  
  -------------------------------------------------------------------------------  
  1.   定义一个通用类  
   
   
  using   System;  
  using   System.Collections;  
   
  namespace   Web  
  {  
  ///   <summary>  
  ///   CheckUserLogon   的摘要说明。  
  ///   </summary>  
  public   class   CheckUserLogon  
  {  
   
  public   static   Hashtable   userList   =   new   Hashtable();  
   
  public   CheckUserLogon()  
  {  
  //  
  //   TODO:   在此处添加构造函数逻辑  
  //  
  }  
   
  public   static   void   AddUserList(   string   user   )  
  {  
  userList.Add(   user   ,   "online"   );  
  }  
   
  public   static   void   RemoveUserList(   string   user   )  
  {  
  userList.Remove(   user   );  
  }  
   
  public   static   bool   CheckUserLogined(   string   user   )  
  {  
  if   (   userList.ContainsKey(   user   )   )  
  {  
  return   true;  
  }  
  else  
  {  
  return   false;  
  }  
  }  
   
   
  }  
  }  
   
  2.在Global.asax中修改session_start()和session_end()  
   
  protected   void   Session_Start(Object   sender,   EventArgs   e)  
  {  
  if   (   CheckUserLogon.CheckUserLogined(   this.User.Identity.ToString()   )   )  
  {       //如果已经有同名用户登录,就清空session,这样用户就不能使用  
  this.Session.Clear();  
  }  
  else  
  {       //如果没有同名用户登录,就记录当前用户  
  CheckUserLogon.AddUserList(   this.User.Identity.ToString()   );  
  }  
  }  
   
   
  protected   void   Session_End(Object   sender,   EventArgs   e)  
  {  
  CheckUserLogon.RemoveUserList   (   this.User.Identity.ToString()   );  
  }  
   
   
  Top

10 楼time_is_life(今夜太冷:http://timeislife.blog.sohu.com)回复于 2005-06-01 11:07:33 得分 0

当然也可以这样写:  
  if   (   CheckUserLogon.CheckUserLogined(   this.User.Identity.ToString()   )   )  
  {       //转到另一个页面,这里提示用户已经有同名用户登录  
                                                                this.Response.Redirect("aaa.aspx")  
  }  
  else  
  {       //如果没有同名用户登录,就记录当前用户  
  CheckUserLogon.AddUserList(   this.User.Identity.ToString()   );  
  }Top

11 楼cndsn(磐石)回复于 2005-06-01 11:17:26 得分 0

对!不要乱来,什么单点登陆都不理解,吓吹,  
  单点登陆(SSO),多个系统一次登陆权限均配,  
  彼此访问无需要再次登陆!  
  大多都是用webservice实现令牌传递,跨系统,跨平台的权限验证。Top

12 楼meixiaofeng(yesmsn)回复于 2005-06-01 11:18:06 得分 0

还要设置多长时间去读一下机器,万一死机Top

13 楼COpyFRee(NULL)回复于 2005-06-01 12:34:41 得分 0

看了标题进来,结果是文不对题!Top

相关问题

  • 怎样实现单点登录?
  • 怎样实现用户登录
  • 密码登录验证简单实现
  • 如果实现单一登录
  • 请教:登录表单如何实现
  • 如何实现单点登录
  • 在XP中怎样实现自动登录?怎样实现自动注销!!
  • 怎样实现用“网络用户”方式登录时,win98的自动登录?
  • 怎样编程实现邮箱登录、阅读、发送
  • 怎样在程序中实现登录别的机器?

关键词

  • asp.net
  • 用户
  • 代码
  • 数据库
  • checkuserlogon
  • 登录
  • checkuserlogined
  • 登陆
  • userlist
  • 静态变量

得分解答快速导航

  • 帖主:c9cad
  • 3tzjq
  • zhongwanli
  • wh8254
  • khpcg
  • time_is_life

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo