问题描述
我现在在模拟实现一个SSO的程序比如有如下3个系统:统一登录认证系统A:192.168.1.20:101分站系统B:192.168.1.20:102分站系统C:192.168.1.20:103我想实现的是不管我在系统B或系统C中任意一套点击登录,统一跳转到系统A进行系统,验证成功后,设置系统B和系统C的Cookie(类似SOHU那样,登录一次,会广播给ChinaRen、17173等设置cookie,无需重复登录),然后返回跳转的系统并显示相关已登录信息我现在就是在设置对应cookie这步遇到了问题,请帮忙看下以下主要代码://系统A中的Login.aspx页面protectedvoidbtnLogin_Click(objectsender,EventArgse){stringuname=this.txtUserName.Text;stringupwd=this.txtUserPwd.Text;if(uname=="admin"&&upwd=="123456"){stringstr1=AskUrl("http://192.168.1.20:102/SSO/SetCookie.aspx?info=Yes_102","utf-8");stringstr2=AskUrl("http://192.168.1.20:103/SSO/SetCookie.aspx?info=Yes_103","utf-8");this.spMsg.InnerText="登录成功!102="+str1+"——103="+str2;}else{this.spMsg.InnerText="抱歉,帐号或密码有误!";}}//系统A中的访问远程页面privatestringAskUrl(stringurl,stringencodingName){stringstr="";try{System.Net.WebRequestwebRequest=System.Net.WebRequest.Create(url);System.Net.WebResponsewebResponse=webRequest.GetResponse();System.IO.Streamstream=webResponse.GetResponseStream();System.IO.StreamReadersr=newSystem.IO.StreamReader(stream,System.Text.Encoding.GetEncoding(encodingName));str=sr.ReadToEnd();}catch{}returnstr;}//系统B的SetCookie.aspx页面protectedvoidPage_Load(objectsender,EventArgse){if(Request.QueryString["info"]!=null){//设置cookie代码省略...Response.Write("Success");Response.End();}Response.Write("Error");Response.End();}//系统C的SetCookie.aspx页面protectedvoidPage_Load(objectsender,EventArgse){if(Request.QueryString["info"]!=null){//设置cookie代码省略...Response.Write("Success");Response.End();}Response.Write("Error");Response.End();}在系统A中的登录结果为:"登录成功!102=Success——103=Success"根据提示可以判断远程的页面有被访问到,可是我分别进入系统B和系统C获取Cookie,以及去C盘查找记录,相关cookie都是null的,有点郁闷,这是什么原因呢?麻烦各位前辈多多指点一下,是不是我的做法有错?也理解错了SOHU的做法?比较急,对于大家的帮忙感激不尽!!!
解决方案
本帖最后由 fangzhongzhong 于 2011-06-04 11:14:21 编辑