`
chenqingwei
  • 浏览: 32424 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SSO与用户登录问题容易混淆

    博客分类:
  • NET
阅读更多
单点登陆(SSO),多个系统一次登陆权限均配,  
  彼此访问无需要再次登陆!  
  大多都是用webservice实现令牌传递,跨系统,跨平台的权限验证。

用数据表实时性不是很好,要总刷新,数据库压力大  
  如果程序出错,比如操作数据库失败,就不准确了  
   
  用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()   );  
  }  
   
   

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

相关推荐

    spring boot 实现SSO单点登陆

    spring boot整合spring security 实现SSO单点登陆 完整DEMO. 1、配置本地hosts 127.0.0.1 sso-login 127.0.0.1 sso-resource 127.0.0.1 sso-tmall 127.0.0.1 sso-taobao windows系统的路径在C:\WINDOWS\system...

    SSO单点登陆解决方案

    一个实现SSO方案的构想SSO单点登陆解决方案

    sso单点登录ppt.ppt

    sso单点登录ppt.ppt

    SSO单点登录

    ASP.NET跨域单点登录源码 ...让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对 Token进行识别和提取,通过与认证系统的通讯,能自动判断当 前用户是否登录过,从而完成单点登录的功能。

    sso用户注册登录

    sso,单点登录的简易视屏,感兴趣的朋友可以看看,对理解sso还是很有帮助

    .net的sso单点登录

    sso单点登录sso单点登录sso单点登录sso单点登录

    SSO单点登陆源代码用户控件

    SSO单点登陆源代码用户控件,部署再moss中,可以实现单点登陆

    sso单点登录源代码

    sso单点登录源代码sso单点登录源代码sso单点登录源代码sso单点登录源代码sso单点登录源代码

    宁盾单点登录(SSO)与致远A8对接方案.pdf

    宁盾单点登录(SSO)与致远A8对接方案.pdf宁盾单点登录(SSO)与致远A8对接方案.pdf宁盾单点登录(SSO)与致远A8对接方案.pdf宁盾单点登录(SSO)与致远A8对接方案.pdf宁盾单点登录(SSO)与致远A8对接方案.pdf宁盾单点登录...

    SSO 单点登录实例

    SSO 单点登录(Single Sign On)的简称, SSO是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    宁盾单点登录(SSO)与SAP对接方案.docx

    宁盾单点登录(SSO)与SAP对接方案.docx宁盾单点登录(SSO)与SAP对接方案.docx宁盾单点登录(SSO)与SAP对接方案.docx宁盾单点登录(SSO)与SAP对接方案.docx宁盾单点登录(SSO)与SAP对接方案.docx宁盾单点登录(SSO)与SAP...

    SSO单点登陆SSO单点登陆

    SSO单点登陆SSO单点登陆SSO单点登陆

    CAS_SSO单点登录实例详细步骤

    CAS_SSO单点登录实例详细步骤,CAS_,SSO,单点登录

    PHP 使用TP5.0 实现SSO单点登录

    因为公司要实现SSO单点登录的效果,最近在网上找了一些资料,但是都没有好用的, 所以自己用PHP 使用TP5.0 实现了SSO单点登录,可以跨多个域名。 下载后在本地配置好 A,B,C 3个网站,就可以模拟效果了。

    SSO_单点登陆流程_简要

    3) 如果验证通过,则从映射表中取出该用户所有能访问的应用系统,显示在sso登录成功页面。转向登录成功页面之前,将该用户所有能访问应用系统的实际用户名都放到cookie中(从映射表中获得)。也就是说,该用户能...

    SSO单点登录实现与实现原理

    内含SSO单点登录的实现源代码,以及实现原理详解,有需要的可以看看。

    MVC SSO 单点登陆完整demo

    MVC SSO 单点登陆完整demo

    SSO单点登录解决方案

    SSO单点登录解决方案,包括HP灵动单点登录系统演示文件和其他的资料文件

Global site tag (gtag.js) - Google Analytics