功能描述
1. 做一个网站A,是通过IIS进行用户认证的;
a) A网站包含一个登陆界面能进行验证用户和密码;
b) A网站包含一个主页面,当用户密码输入正确进入此界面,主页面只需先生登陆成功信息即可;
2. 再做一个网站B,只有一个页面,页面上只有一个按钮,点击此按钮能直接打开A网站的主界面,不用输入A网站的用户和密码,也就是你需要在按钮的事件中用代码模拟登陆A网站,然后打开A网站的主界面。开发环境
以下是建议开发环境,因为我们项目是这个环境,当然你可以按照你的开发环境进行,但必须是微软的开发环境
Visual Studio 2010
Framework 3.5
C#语言
运行环境
以下是建议运行环境,因为我们项目是这个环境,当然你可以按照你的运行环境进行,但必须是微软的运行环境Windows 2008 Server 64bit
IIS 7.0
1. 做一个网站A,是通过IIS进行用户认证的;
a) A网站包含一个登陆界面能进行验证用户和密码;
b) A网站包含一个主页面,当用户密码输入正确进入此界面,主页面只需先生登陆成功信息即可;
2. 再做一个网站B,只有一个页面,页面上只有一个按钮,点击此按钮能直接打开A网站的主界面,不用输入A网站的用户和密码,也就是你需要在按钮的事件中用代码模拟登陆A网站,然后打开A网站的主界面。开发环境
以下是建议开发环境,因为我们项目是这个环境,当然你可以按照你的开发环境进行,但必须是微软的开发环境
Visual Studio 2010
Framework 3.5
C#语言
运行环境
以下是建议运行环境,因为我们项目是这个环境,当然你可以按照你的运行环境进行,但必须是微软的运行环境Windows 2008 Server 64bit
IIS 7.0
<HEAD>
<TITLE>模拟登陆</TITLE>
</HEAD>
<BODY><script type="text/javascript">
var xmlHttp; function createXMLHttpRequest(){if(window.ActiveXObject){xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}else if (window.XMLHttpRequest){xmlHttp=new XMLHttpRequest();}} function startRequest(){
if(userid.value=="")
{
alert("请输入用户名!");
userid.focus();
}
else if(password.value=="")
{
alert("请输入密码!");
password.focus();
}
else
{ createXMLHttpRequest();
xmlHttp.onreadystatechange=handleStateChange;
xmlHttp.open("GET","http://yx-pc/MySite/Person.aspx",true,userid.value,password.value);
xmlHttp.send(null);
}} function handleStateChange(){if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200) { window.location="http://yx-pc/MySite/Person.aspx"; }
else
{
alert("您的用户名或者密码不正确,请联系管理员!");
}}
}
</script>
<label>userid
<input type="text" name="userid">
</label>
<p>
<label>password
<input type="password" name="password">
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="提交" onClick="javascript:startRequest();">
</label>
</p></BODY>
</HTML>
不用输入A网站的用户和密码,也就是你需要在按钮的事件中用代码模拟登陆A网站,然后打开A网站的主界面。
-----------------------------------------------------------------
何解?Oauth协议登陆?
public class ProxyServer : IHttpHandler
{
//当收到客户端请求后,进行如下处理:
public void ProcessRequest(HttpContext context)
{
// 把访问改成指向ServerA的访问地址
String url = "http://ServerA" + context.Request.Path; // 访问ServerA上的该页面,并带上ServerB的访问凭据
var wc = new WebClient();
wc.Credentials = CredentialCache.DefaultCredentials;
var response = wc.DownloadString(url); // 得到结果后原样传回给客户端
context.Response.Write(response);
}
}当然上面的代码只是示意性的,实际还要考虑Get/Post等不同请求方式、支持不同的协议、cookie、缓存、代理服务器本身的管理等。好在代理服务器很多,有开源免费的也有商用的,可以根据你的需求选择。