表单或基本身份验证
我有一个Windows应用程序需要调用Forms Authenticated MVC操作。 问题是,我不确定如何将Windows应用程序的调用验证到Forms Authenticated MVC应用程序中。
以下代码返回登录页面。 有没有办法允许下面的代码通过任何方式使用Forms身份验证,还是我需要创建一个新的Web API项目,使用基本身份验证这个工作?
WebRequest req = WebRequest.Create("http://myurl/protectaction");
req.Credentials = new NetworkCredential("username", "password");
var res = req.GetResponse();
非常感谢您的帮助,
理查德休斯
您可以使用CookieContainer来存储由LogOn操作发出的FormsAuthentication cookie。 因此,基本上,您将向LogOn操作发送第一个请求,然后为随后的请求重新使用相同的WebRequest实例。
这样你将只通过电线发送你的凭证一次。
例如:
var container = new CookieContainer();
var req = (HttpWebRequest)WebRequest.Create("http://myurl/account/logon");
req.CookieContainer = container;
req.Method = "POST";
using (var writer = new StreamWriter(req.GetRequestStream()))
{
var data = HttpUtility.ParseQueryString(string.Empty);
data["username"] = "john";
data["password"] = "secret";
writer.Write(data.ToString());
}
using (var res = req.GetResponse())
{
// You could check here if login was successful
}
req = (HttpWebRequest)WebRequest.Create("http://myurl/protectedresource");
req.CookieContainer = container;
using (var res = req.GetResponse())
using (var reader = new StreamReader(res.GetResponseStream()))
{
string result = reader.ReadToEnd();
// do something with the protected resource
}
链接地址: http://www.djcxy.com/p/42077.html