<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA["Donuts和Campus单点登录的实现" 主题的最后发表文章]]></title>
		<link>http://www.xerllent.cn/myForum/posts/list/16.page</link>
		<description><![CDATA[最后发表在 "Donuts和Campus单点登录的实现" 主题的信息]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Donuts和Campus单点登录的实现</title>
				<description><![CDATA[ SSO在当前是非常流行和必须的，当然我们也不例外。<br /> <br /> 先说说我们的情况，campus和donuts安装在一台服务器上的，campus端口为80，donuts为9080。因为程序源代码看不到，因此感觉没有直接修改程序的可能。只能变通一下……<br /> 当然前提是用户在这两个系统上的登录名和密码必须一致，这个问题只有自己想办法写一段代码，从donuts中把数据复制到campus中（campus为什么没有批量导入的功能？！）。而且两个系统对密码的加密结果不一样，直接复制数据库还有问题，真不知道咋个办好。继续想歪主意……<br /> <br /> 两个系统的数据库分别如下：<br /> 数据库名：donuts15<br /> 用户表：dbo.xer_user<br /> 数据库名：xercampus<br /> 用户表：act_user<br /> <br /> 在服务器上另开一个Apache，端口为88，写了一个login.php<br /> <br /> &lt;html&gt;<br /> &lt;head&gt;<br /> &lt;title&gt;单点登陆接口&lt;/title&gt;<br /> &lt;?php<br /> //用下面一段区分下访问者来源，选择公网IP或者内部IP访问服务器<br /> function   get_client_ip()  <br />   {  <br />   if(getenv('HTTP_CLIENT_IP'))   {  <br />   $client_ip   =   getenv('HTTP_CLIENT_IP');  <br />   }   elseif(getenv('HTTP_X_FORWARDED_FOR'))   {  <br />   $client_ip   =   getenv('HTTP_X_FORWARDED_FOR');  <br />   }   elseif(getenv('REMOTE_ADDR'))   {  <br />   $client_ip   =   getenv('REMOTE_ADDR');  <br />   }   else   {  <br />   $client_ip   =   $HTTP_SERVER_VARS['REMOTE_ADDR'];  <br />   }  <br />   return   $client_ip;  <br />   }  <br /> <br />  if(substr(get_client_ip(),0,7)=="192.168") {<br /> $toIP2="http://192.168.0.4/prog/login.jsp";   //我们直接把用户名和密码传递给这个页面进行登录判断<br /> $toIP1="http://192.168.0.4:9080/login.jsp/j_security_check";  //这是donuts的登录判断<br /> }<br />  else<br /> {<br /> $toIP2="http://*.*.*.*/prog/login.jsp";<br /> $toIP1="http://*.*.*.*:8081/login.jsp/j_security_check";<br /> }<br /> ?&gt;<br /> &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br /> &lt;link rel="stylesheet" href="images/campus.css" type="text/css"&gt;<br /> &lt;script language="JavaScript"&gt;<br /> &lt;!--<br /> //因为两个系统的表单中名字有点区别，所以用户输入一套口令后，用js复制一份传给另一个系统。<br /> function mysubmit(){<br /> document.formlogin.username.value=document.formlogin.j_username.value;<br /> document.formlogin.passwd.value=document.formlogin.j_password.value;<br /> document.formlogin.target="_blank";<br /> document.formlogin.action="&lt;?php echo($toIP1)?&gt;";<br /> document.formlogin.submit();<br /> document.formlogin.target="_self";   //反复测试单点登录会造成这一个系统无法登陆，关闭浏览器，重新登录即可。原因还不太清楚<br /> document.formlogin.action="&lt;?php echo($toIP2)?&gt;";<br /> document.formlogin.submit();<br /> }<br /> //--&gt;<br /> &lt;/script&gt;<br /> &lt;/head&gt;<br /> &lt;body text="#000000" leftmargin="0" topmargin="0" marginwidth="0" bgcolor="#EDECE9"  &gt;<br /> &lt;table width="755" border="0" cellspacing="0" cellpadding="10" align="center" height="100%"&gt;<br />   &lt;tr&gt; <br />     &lt;td align="center"&gt; <br />       &lt;form name="formlogin" method="post" action=""&gt;<br />         &lt;table border="0" cellpadding="0" cellspacing="0" background="images/login3.gif" width="416"&gt;<br />           &lt;tr&gt; <br />             &lt;td colspan="2" align="center"&gt;&lt;img src="images/login1.gif"&gt;&lt;/td&gt;<br />           &lt;/tr&gt;<br />           &lt;tr align="center"&gt; <br />             &lt;td colspan="2"&gt;<br />               &lt;table width="250" align="center" class="f90"&gt;<br />                 &lt;tr&gt; <br />                   &lt;td align="center" colspan="2" &gt; <br />                    单点登陆接口 <br />                   &lt;/td&gt;<br />                 &lt;/tr&gt;<br />               &lt;/table&gt;<br />               &lt;table width="250" align="center" cellpadding="4" class="f90" border="0" cellspacing="0"&gt;<br />                 &lt;tr&gt; <br />                   &lt;td align="right" width="80" valign="middle" height="32"&gt;用户名：&lt;/td&gt;<br />                   &lt;td&gt; <br />                     &lt;input type="text" name="j_username" size="20" maxlength="20" style="font-size:9pt;border:1px solid black;width:100px"&gt;<br /> &lt;input type="hidden" name="username" size="20" maxlength="20" style="font-size:9pt;border:1px solid black;width:100px" type="hidden"&gt;<br />                   &lt;/td&gt;<br />                 &lt;/tr&gt;<br />                 &lt;tr&gt; <br />                   &lt;td align="right" height="32" width="80" valign="middle"&gt;密 码：&lt;/td&gt;<br />                   &lt;td&gt; <br />                     &lt;input type="password" name="j_password" size="20" maxlength="20" style="font-size:9pt;border:1px solid black;width:100px"&gt;<br /> &lt;input type="hidden" name="passwd" size="20" maxlength="20" style="font-size:9pt;border:1px solid black;width:100px"&gt;<br />                   &lt;/td&gt;<br />                 &lt;/tr&gt;<br />               &lt;/table&gt;<br />             &lt;/td&gt;<br />           &lt;/tr&gt;<br />           &lt;tr&gt; <br />             &lt;td&gt;&nbsp;&lt;/td&gt;<br />             &lt;td align="center"&gt;<br />               &lt;input type=image  src="images/login_bn1.gif" name="确定" value="确定" onClick="return mysubmit()"&gt;             <br />             &lt;/td&gt;<br />           &lt;/tr&gt;<br />           &lt;tr&gt; <br />             &lt;td colspan="2"&gt;&lt;img src="images/login2.gif" width="416" height="35"&gt;&lt;/td&gt;<br />           &lt;/tr&gt;<br />         &lt;/table&gt;       <br />       &lt;/form&gt;<br />     &lt;/td&gt;<br />   &lt;/tr&gt;<br /> &lt;/table&gt;<br /> &lt;/body&gt;<br /> &lt;/html&gt;<br /> <br /> <br /> 希望官方能给一个更好的sso方案，特别是系统用户表数据的统一。<br /> ]]></description>
				<guid isPermaLink="true">http://www.xerllent.cn/myForum/posts/preList/4081/11680.page</guid>
				<link>http://www.xerllent.cn/myForum/posts/preList/4081/11680.page</link>
				<pubDate><![CDATA[Fri, 7 May 2010 13:11:25]]> GMT</pubDate>
				<author><![CDATA[ iopu]]></author>
			</item>
			<item>
				<title>回复:Donuts和Campus单点登录的实现</title>
				<description><![CDATA[ 另：我的Campus在IE8下没法通过管理员添加新用户，因为选不了“生日”。。。。why？<br /> <br /> 逼的没法，把注册页面的input readonly去掉，直接输入生日]]></description>
				<guid isPermaLink="true">http://www.xerllent.cn/myForum/posts/preList/4081/11681.page</guid>
				<link>http://www.xerllent.cn/myForum/posts/preList/4081/11681.page</link>
				<pubDate><![CDATA[Fri, 7 May 2010 13:13:10]]> GMT</pubDate>
				<author><![CDATA[ iopu]]></author>
			</item>
			<item>
				<title>回复:Donuts和Campus单点登录的实现</title>
				<description><![CDATA[ [quote=iopu]另：我的Campus在IE8下没法通过管理员添加新用户，因为选不了“生日”。。。。why？<br /> <br /> 逼的没法，把注册页面的input readonly去掉，直接输入生日[/quote]<br /> <br /> campus某些控件没有来得及更新，如果想要校园网站系统，请使用XerSites2.2的版本，谢谢支持，非常感谢iopu的贡献！！]]></description>
				<guid isPermaLink="true">http://www.xerllent.cn/myForum/posts/preList/4081/11684.page</guid>
				<link>http://www.xerllent.cn/myForum/posts/preList/4081/11684.page</link>
				<pubDate><![CDATA[Mon, 7 Jun 2010 17:06:34]]> GMT</pubDate>
				<author><![CDATA[ admin]]></author>
			</item>
	</channel>
</rss>
