一套主系统,需登陆访问。进入的主页面是一些URL链接,有链接其他系统的。
怎么可以实现,防止他人直接在地址栏里输入地址访问。
比如说:我们登陆www.hao123.com需要登陆进入,进入后我们点击www.china.com可以访问该网站。
而我们在地址栏里输入www.china.com拒绝访问。

解决方案 »

  1.   

    http://zhangweiguo3984.cnblogs.com/archive/2006/01/09/313598.html  不知道可有用,看看吧
      

  2.   

    你可以在WebConfig在设置错误验证,让它自动转向,他就不会转向其它页面上去了,
      

  3.   

    在用户登录时把用户名存放在Session中,例如Session["UserName"] = "zhf"。而非登陆页面验证Session["UserName"]是否为null.如果不是通过登陆页面,而是直接经由地址栏的URL进入的,那么Session["UserName"]一定为null,这时可向用户发出提示信息,或直接跳转到登陆页面即可.
      

  4.   

    打开 www.china.com 的时候传一个用户的ID号过去,然后在根据这个ID号进行相应的动作。看看网易,也是传ID号。
      

  5.   

    那可以用wls12342004(青青子木) 的方法,用Session或是Cookie来判断
      

  6.   

    Session不能跨系统的,不好控制。
      

  7.   

    Request.UrlReferrer是得到当前页面的上一个URL的方法,利用它你可以判断用户的来路。
      

  8.   

    比较关注
    一楼的应该不是楼主需要的。
    “一个用户只能在一个地方登录的情况,也就是我们通常所说的单点登录”,单点登录不是这样解释的。楼主所说的需求才是单点登录,和EAI(企业应用集成)的登录差不多。
      

  9.   

    Request.UrlReferrer这个方法很好。直接在地址栏中输入地址,就得不到上次访问的URL,系统直接报错。
      

  10.   

    客户端用脚本打开的新页面的Request.UrlReferrer=null
      

  11.   

    这个问题比较难解决,以前我所在的公司就购买了第三方一套系统,类似MS的passport
      

  12.   

    一般来说,SSO确实要通过QueryString传ID,因为Cookies不能跨域名,而Hidden必须通过Post才能传递。但那个ID不是简单的用户ID,而仅仅是一个Key,那个Key传递过去两台Web服务器之间就会通讯,来确认这是不是一个有效的Key,是的话就自动登录了。看一看.Net Passport或者Google Account,一般这个Key都有160位,16进制甚至是大小写字母数字符号混排,所以一般你是没办法靠碰运气碰到能用上别人的Key的,而Key在用过或者一小段时间后就失效,冒领真的很难。
      

  13.   

    你可以找一个开源的SSO系统,这个可以实现认证
    有些系统也同时支持授权JOSSO,CAS等系统不错一般spring中的acegi+CAS就能满足要求,就是不知道是不是完全支持.net
      

  14.   

    可以用上面说的传递session的方法,传送的key长一些,要随机的或者判断url,如果转去的网站是你们自己开发的话。