(求助)用代码模拟登陆IIS Windows Authentication认证的网站
功能描述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
--------------------编程问答-------------------- 为嘛没人呢.......在线等...... --------------------编程问答-------------------- 除 --------------------编程问答-------------------- Q:1445232290 --------------------编程问答--------------------
<HTML>--------------------编程问答-------------------- ............... --------------------编程问答-------------------- 谢谢yeness,不过这个对我们不可行呢。 --------------------编程问答-------------------- [b]这个是针对于那个自己开发的登录页面的,而非基于IIS的Windows认证 --------------------编程问答--------------------
<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协议登陆? --------------------编程问答-------------------- 不是 网站基于Windows 认证,弹出的登录框,在查看网页源码的时候,会发现是空的,不会记录这个登录框的任何信息。
--------------------编程问答-------------------- 自己顶一下吧 --------------------编程问答-------------------- 求解 --------------------编程问答-------------------- 在东西是System.Web.Security空间下的FormsAuthentication
具体的东西俺们不多说,自己看msdn,他比俺们说的清楚 --------------------编程问答-------------------- 麻烦说清楚点了。 --------------------编程问答-------------------- 在线等求解 --------------------编程问答-------------------- 这个估计在页面里面做不了吧。 --------------------编程问答--------------------
请问有什么方法吗?谢谢您赐教,加qq吧1445232290 --------------------编程问答-------------------- 这个是什么功能这么重要?甚至花钱也要解决?
不能变通其他方法吗 --------------------编程问答-------------------- 能帮帮忙不...支个招呗。。。。。 --------------------编程问答-------------------- 可以把B做成代理服务器,前提是B和A要在同一域中,B有该域的访问账号。 --------------------编程问答-------------------- 能麻烦说详细点吗?? --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 原理是很简单的,可以用下面这段示意代码说明:
// 在服务器B上注册一个HttpHandler,处理所有页面请求
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、缓存、代理服务器本身的管理等。好在代理服务器很多,有开源免费的也有商用的,可以根据你的需求选择。
补充:.NET技术 , ASP.NET