Мне нужно подражать простому действию в HTML, этот HTML-код действительно работает для моей цели, но я должен сделать одно и то же действие в MVC ASP.NET.Правильное моделирование действия HTML в MVC ASP.NET
Вот HTML:
<HTML>
<HEAD>
</HEAD>
<BODY>
<FORM method="post" autocomplete="off" ACTION="https://<target IP>/auth/index.html/u">
Username:<BR>
<INPUT type="text" name="user" accesskey="u" SIZE="25" VALUE="">
<BR>
Password:<BR>
<INPUT type="password" name="password" accesskey="p" SIZE="25"
VALUE="">
<BR>
<INPUT type="submit">
</FORM>
</BODY>
Этот HTML получает два параметра "пользователя" и "пароль" и отправляет их в URI. Я пробовал методы «GET» и «POST» в своем приложении, но это не сработало. Вот мой контроллер в MVC ASP.NET:
[AllowAnonymous]
[HttpPost]
public ActionResult Login(LoginModel model)
{
if (ModelState.IsValid)
{
string ArubaPost = "user=" + model.user + "&password=" + model.password;
string ArubaURI = "https://<target IP>/auth/index.html/u";
// this is to bypass the SSL certiface, not sure if it is needed
System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();
// web request
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ArubaURI);
request.KeepAlive = false;
request.AllowAutoRedirect = false;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
byte[] postBytes = Encoding.Default.GetBytes(ArubaPost);
request.ContentLength = postBytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postBytes, 0, postBytes.Length);
requestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
string location = response.Headers[HttpResponseHeader.Location];
return Redirect(ArubaURI + location);
}
// If we got this far, something failed, redisplay form
return View(model);
}
Я также попробовал «GET» действие, но результат как для такой же. Я действительно не получаю никаких ошибок, и когда он запущен в браузере, я вижу, что запрос отправляется с кодом состояния 200 с помощью элемента проверки Chrome. Это страница, в которой сетевой контроллер перенаправляет весь трафик на нее, а затем пользователю нужно ввести имя пользователя и пароль. Затем, когда он отправляется через POST или GET, сетевой контроллер должен отображать параметры и проверять их. В случае успешной проверки сетевой контроллер перенаправляет пользователя на запрашиваемую им страницу, чтобы он мог просматривать веб-страницы. Эта простая HTML-страница выполняет все это, но в приложении MVC я снова и снова перенаправляется на ту же страницу входа в систему. любые идеи, что может быть неправильным?
Благодарим вас, так какой из возможных способов сделать это? – FrozenHG
Я думаю, вы можете использовать прокси-сервер http для удовлетворения ваших потребностей на основе моих угадываний. Вы можете проверить ответы в этом вопросе: http://stackoverflow.com/questions/9276055/free-open-source-proxy-server-in-java-with-support-for-ipv6-https-user-managemen – deerchao