现在在做一个网站,这个网站有BBS系统(动网论坛),博客(oblog)新闻发布系统(asp自己写的),资源系统(自己开发的,asp.net),想实现只要登陆一次,然后去其他系统的时候不需要重复登陆,这样可以实现吗?各个系统都装在同一个服务器上,同一下域下。

解决方案 »

  1.   

    那不就类似csdn么?
    关注一下
      

  2.   

    微软有一套叫Single-SignOn的东西,挺好用,可以剽窃剽窃!
      

  3.   

    http://blog.joycode.com/saucer/archive/2004/02/25/13789.aspx
      

  4.   

    把登录放在一起不就行了吗?session放在sql server上
      

  5.   

    使用相同的Session
    把其中一个设置为主目录,把其他的设置为它的子目录。
    把所有的dll放到主目录的bin中
    只保留主目录的Application,子目录可以为虚拟目录,但不能有Application(删除Application在IIS的属性中操作)
    这样就可以共享Session变量把Session放到Sql Server中,由于SessionID在各个Application中是不相同的,因此还不能实现单点登录。
      

  6.   

    也可以考虑使用数据库保存临时信息。只在应用切换前往数据库中写一条记录,切换后初始化Session,立即将切换数据删除。
      

  7.   

    没亲手做过,但思路上面都已经讲到!~好~在论坛上看到过一些建议,一般都是利用ASP.NET里基于Form的认证方法,其中一个方案是把所有的应用变成子目录,而非单独的虚拟目录,然后集中起来放在一个虚拟目录下,然后在虚拟目录下设置单一的认证。但这方案大概只适用于网络应用都集中在单一服务器上的情形,而且强制去虚拟化也减少了其中应用们的相对独立性。当然,微软已经提供了一个很好的方案,Passport认证服务。具体流程
    一。用户访问你网站上的某一网页
    二。两种情形
         A。如果你的网页发现用户尚未被认证,则显示认证登陆(Sign In)按钮
           1。用户按登陆按钮
           2。你的网页重新定向用户请求到认证服务器,并提供你的网站的ID
           3。两种情形
               a。如果认证服务器通过cookie发现用户尚未被认证,认证服务器显示用户名字/密码登陆表单,用户输入名字/密码,认证服务器认证后,在用户浏览器端生成一个认证cookie,并重新定向用户请求回到原来你的网页,并在URL里提供用预先生成的你网站的公钥加密过的ticket和用户profile信息,这些信息的细节参考上述文章
               b。如果认证服务器通过cookie发现用户已经被认证过(也许是在别的应用/网站里),认证服务器更新那个认证cookie,并重新定向回到原来你的网页,并在URL里提供用预先生成的你网站的公钥加密的ticket和用户profile信息         你的网页检查URL,用预先生成的你网站的私钥,获取用户信息,生成一认证cookie,然后显示退出认证(Sign Out)按钮     B。如果你的网页发现用户已经被认证,显示退出认证(Sign Out)按钮三。如果用户点击退出认证按钮,则将触发一个到认证服务器的退出认证网页的请求,认证服务器的退出网页根据回来的认证cookie,为每个目前用户已经登陆的应用/网站生成一个〈IMG〉,其属性SRC则指向各个应用/网站的退出认证页面,并使认证服务器的认证cookie过期。而各个应用/网站的退出认证网页,则把自己的认证cookie过期。结果是,用户点击退出认证按钮的话,他将从目前登陆的所有应用/网站退出。
      

  8.   

    我认为把个人登陆信息:用户名密码IP在登陆的时候写入临时表,在不同系统下,先判断session是否存在,如果不存在再根据IP查表,赋予session值!我认为这样就可以解决:“多个不同系统,如果实现单点登陆,统一认证”
      

  9.   

    我是用Cookie解决的:用cookie记录用户加密的登录凭证,所有系统重定向到这里取该凭证并返回与数据库进行比对.应用了一段时间还算不错.只是由于依赖于cookie,有时会有些麻烦,因为总有一些用户的浏览器有问题,无形中增加了工作量.但实在想不出更好的办法.希望同大家交流这方面的经验.
    msn:[email protected]
      

  10.   

    可以作个Web Service进行验证,或者类似.NET Passport
      

  11.   

    我认为把个人登陆信息:用户名密码IP在登陆的时候写入临时表,在不同系统下,先判断session是否存在,如果不存在再根据IP查表,赋予session值!我认为这样就可以解决:“多个不同系统,如果实现单点登陆,统一认证”
    ===========================================================================
    这里存在一个问题吧?如果多个用户是同一网络内,那他们的IP地址是相同的,怎么解决呢?
      

  12.   

    http://www.microsoft.com/china/msdn/library/webservices/asp.net/singlesignon.mspx
      

  13.   

    关注,有感于此,想请教一个初级问题。用FORM进行用户登录验证,通过验证后将用户信息写入SESSION中,此时是否还要将用户信息写入客户端用户COOKIE中?还是说此过程会自动完成?或者此过程已经不需要了?
      

  14.   

    问题是各个系统都有自己的权限分配啊,好像论坛就有不同的角色权限,还有就是要改动各个系统(动网论坛啊,blog系统等不是自己做的系统)也比较困难,还有asp和asp.net的session好像也不能共用啊。
      

  15.   

    如果安全要求不高,只要cookie最简单
      

  16.   

    .NET Passport 应该不是大众的解决办法。传统的解决方案如下:1.看你的要求应该是以ASP.NET技术为主,ASP.NET的验证是基于COOKIE的,见意先统一BBS系统,博客(oblog)新闻发布系统,的身份验证基于COOKIE技术。
    2.cookie存在于浏览器中,所以无论.NET和ASP程序都可以识别。
    3.ASP.NET的验证选择Forms方式,用户源可以为数据库或XML文档,并以用户名命名COOKIE。
    4.逻辑问题解决,但存在的问题在于,你所说的三个系统应该是分别基于分离数据库的用户管理,所以后继应该解的是三个系统的用户统一问题。
      

  17.   

    为什么不用Active Directory呢?建议采用Active Directory +数据库的方式,而且IIS可以很方便的跟AD 集成的
      

  18.   

    支持:为什么不用Active Directory呢?建议采用Active Directory +数据库的方式,而且IIS可以很方便的跟AD 集成的
      

  19.   

    用 cookie   来实现转换利用上下问的httpContext 可以实现
    如8个系统中假设 有4个是基于 Session ,4 个是基于 cookie的,姑且称他们为8个密码,他们的值之间都有相互的关联,而且他们的名字都不一样那只要在 httpContext中 获取当前8个密码中任何一个不为空的密码,然后由其来生成其他7个密码就可以了(在生成前判断要生成的密码是否存在,可以提高效率)。这样就以最简单的方式实现了单点登入
      

  20.   

    把信息写入cookie,各系统读各系统的用户标示
      

  21.   

    我有一个好办法,并且很方便:
    在登录页面登录以后,让每一个网页后面加一个id值,把?id=xx的值传到每个小网站上去,然后在每个小网站上得到这个值,不过可能会不太安全,id的值要加密呀!!