从外部站点登录(ASP.NET MVC 3.0) [英] Login from external site (ASP.NET MVC 3.0)
问题描述
大家好,
我的案例 是: 我有 两个
网站 , 一个有权访问 到 客户
(私有) 和公共 <跨度>。我 n 能够
从 公开登录 到私人
网站 。 要做到这一点我 添加
相应的字段(用户 和密码 ),我通过POST操作将其发送到私有站点,如下所示 :
的CookieContainer饼干=新的CookieContainer();
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP; //请求登录页面来获得会话cookie
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; GETHtml(RETURNURL,饼干,RETURNURL);
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP; //现在我们可以登录了<
登录(model.UserName,model.Password,饼干,RETURNURL);
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP; return Redirect(@" http:// privada /");
public string GETHtml(string url,CookieContainer cookies,string returnUrl)
{
HttpWebRequest的的WebRequest =(HttpWebRequest的)WebRequest.Create(URL);
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; webRequest.CookieContainer = cookies;
webRequest.UserAgent =" Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022;" ;;)
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; webRequest.Referer = RETURNURL;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;使用(HttpWebResponse WebResponse类=(HttpWebResponse)webRequest.GetResponse( ))
{
;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; //我们需要任何回应Cookie添加到我们的Cookie容器&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; cookies.Add(webResponse.Cookies);
&nb属;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;使用(VAR流=新的StreamReader(webResponse.GetResponseStream()))
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; return stream.ReadToEnd();
}
}
public bool Login(string Username,string Password,CookieContainer cookies,string returnUrl)
{
串poststring =的String.Format(QUOT;用户名= {0}&安培;密码= {1}&安培; BTN-acceder.x = 63&安培; BTN-acceder.y = 13&安培; BTN-acceder =登录" ;,
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;用户名,密码);
&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; byte [] postdata = Encoding.UTF8.GetBytes(poststring);
&NBSP; HttpWebRequest的的WebRequest =(HttpWebRequest的)WebRequest.Create(RETURNURL);
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; webRequest.CookieContainer = cookies;
webRequest.Method =" POST";
webRequest.Referer = returnUrl;
webRequest.Headers.Add(QUOT;来源" ;, @" HTTP:// PRIVADA /");
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; &NBSP;&NBSP; webRequest.UserAgent =" Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022;" ;;)
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; webRequest.ContentType = QUOT;应用/ X WWW的窗体-urlencoded英寸;
&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; webRequest.ContentLength = postdata.Length;
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;使用(流作家= webRequest.GetRequestStream())
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; writer.Write(postdata,0,postdata.Length);
$
;&NBSP;&NBSP;&NBSP;使用(HttpWebResponse WebResponse类=(HttpWebResponse)webRequest.GetResponse())
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ; {
&nb属;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; //我们需要向我们的cookie容器添加任何响应cookie
  ; cookies.Add(webResponse.Cookies);
$
  ;&NBSP;&NBSP; //仅用于调试
使用(VAR流=新的StreamReader(webResponse.GetResponseStream()))
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; System.Diagnostics.Debug.WriteLine(stream.ReadToEnd());
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; return(webResponse.StatusCode == HttpStatusCode.OK);
}
}
然而,会话 不会出现
私人 网络访问 。 有谁知道
我是 做错了或 可以指导我 ?
$
我是使用 ASP.Net MVC 3.0
非常感谢 提前 ,
Jose < /跨度> <跨度ID = "x_x_result_box" LANG = "EN"> <跨度> 跨度> 跨度>
尝试在forums.asp.net上的ASP.Net MVC论坛。
Hi all,
My case is: I have two
sites, one with access to customers
(private) and a public. I need to be able
to login from the public to the private
site. To do this I added
the appropriate fields (user and password) and I send it with a POST operation to the private site as follows:
//Request login page to get a session cookie
GETHtml(returnUrl, cookies, returnUrl);
//Now we can do login
Login(model.UserName, model.Password, cookies, returnUrl);
return Redirect(@"http://privada/");
public string GETHtml(string url, CookieContainer cookies, string returnUrl)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.CookieContainer = cookies;
webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022;";
webRequest.Referer = returnUrl;
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
{
//We need to add any response cookies to our cookie container
cookies.Add(webResponse.Cookies);
using (var stream = new StreamReader(webResponse.GetResponseStream()))
return stream.ReadToEnd();
}
}
public bool Login(string Username, string Password, CookieContainer cookies, string returnUrl)
{
string poststring = string.Format("UserName={0}&Password={1}&btn-acceder.x=63&btn-acceder.y=13&btn-acceder=login",
Username, Password);
byte[] postdata = Encoding.UTF8.GetBytes(poststring);
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(returnUrl);
webRequest.CookieContainer = cookies;
webRequest.Method = "POST";
webRequest.Referer = returnUrl;
webRequest.Headers.Add("origin", @"http://privada/");
webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022;";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = postdata.Length;
using (Stream writer = webRequest.GetRequestStream())
writer.Write(postdata, 0, postdata.Length);
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
{
//We need to add any response cookies to our cookie container
cookies.Add(webResponse.Cookies);
//Only for debug
using (var stream = new StreamReader(webResponse.GetResponseStream()))
System.Diagnostics.Debug.WriteLine(stream.ReadToEnd());
return (webResponse.StatusCode == HttpStatusCode.OK);
}
}
However, the session does not appear with
private Web access. Does anyone know what
I'm doing wrong or can guide me?
I am using ASP.Net MVC 3.0
Thank you very much in advance,
Jose
Try the ASP.Net MVC forum on forums.asp.net.
这篇关于从外部站点登录(ASP.NET MVC 3.0)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!