一共三个系统,A,B,C,如何实现,在任意系统登陆后,在访问其他系统时,不用再登陆/

解决方案 »

  1.   

    如果三个站点在同一个服务器上,那么asp.net 2.0提供了内置的单点登录方式。要设置web.config
      

  2.   

    由于某些原因,在我们的应用中会遇到一个用户只能在一个地方登录的情况,也就是我们通常所说的单点登录。在ASP.NET中实现单点登录其实很简单,下面就把主要的方法和全部代码进行分析。
    实现思路
    利用Cache的功能,我们把用户的登录信息保存在Cache中,并设置过期时间为Session失效的时间,因此,一旦Session失效,我们的Cache也过期;而Cache对所有的用户都可以访问,因此,用它保存用户信息比数据库来得方便。
              string sKey = username.Text.ToString().Trim(); // 得到Cache中的给定Key的值
                string sUser = Convert.ToString(Cache[sKey]); // 检查是否存在 
                if (sUser == null || sUser == String.Empty)
                {
                    
                    TimeSpan SessTimeOut = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0);//取得Session的过期时间
                    HttpContext.Current.Cache.Insert(sKey, sKey, null, DateTime.MaxValue, SessTimeOut, System.Web.Caching.CacheItemPriority.NotRemovable, null);//将值放入cache己方便单点登录
                  //成功登录
                }
                else if (Cache[sKey].ToString() == sKey)//如果这个账号已经登录
                {
                    ClientScript.RegisterStartupScript(GetType(), "提示", "<script>alert('对不起,当前用户已经登录');</script>");
                    return;
                }
                else
                {
                    Session.Abandon();//这段主要是为了避免不必要的错误导致不能登录
                } 
    引用"孟子E章"
      

  3.   

    abc说的只是简单的一次,登陆而已。我说的是,如何实现多系统登陆,而只是验证一次用户名与密码
      

  4.   

    首先你得用Forms验证
    第一步修改Web.config文件,加入以下几句
    <authentication mode="Forms">
    <forms name=".AspNetForums" protection="All" timeout="60" loginUrl="hiForum/web/login.aspx" />
    </authentication>
    <machineKey
             validationKey= "CS0B3CFVS6J1F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3435267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529ADD4GD6" 
             decryptionKey= "8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" 
             validation="SHA1"> 
    </machineKey>
    以上的的东东.你三个项目的都必须一制.第二步,登录写入Cookies
    FormsAuthentication.SetAuthCookie(user_name,false);
    HttpCookie lcookie = Context.Response.Cookies[FormsAuthentication.FormsCookieName];
    lcookie.Expires=DateTime.Now.AddDays(System.Convert.ToInt32(14));
    lcookie.Domain = ".123456.com"; 
    以上的lcookie.Domain = ".123456.com"; 这个很重要,也就是只要在*.123456.com上面无论是ABC登录过.其它的都不用登录了,也就是域...
      

  5.   

    再简单的方法大概没有了,我这里也是用SSOSERVER生成TOKEN来使客户端获得用户信息
      

  6.   

    正在做DISCUZ的整合 也要实现LZ同样的功能。。帮你顶了。。
      

  7.   

    做个Portal 吧,其它系统都可以放在里面,只要登录Portal就行了,我做过的系统就是如此实现的。
      

  8.   

    同意楼上,Portal 实际也就是验证中心,用来验证用户登录状态。
      

  9.   

    如果三个系统在一个服务器上,那就太SIMPLE了,也不过就是在web.config里配置的问题了。或者就算不是一个服务器,只要是一个内部网上的也应该可以的。还是web.config里的<membership>的<providers>的connectionStringName指定问题。
      

  10.   

    配置webconfig是指多是用.net开发的,但是真正现实中很多要实现单点登录的好像不一定多是.net的吧,那象asp,jsp,php这些根本就没有webconfig这么实现呢