Usuário com melhor resposta
Usando HttpWebRequest para saber se usuario e senha são validos

Pergunta
-
Oi todo mundo,
Estou desenvolvendo uma aplicação em asp.net com c# para enviar usuário e senha para um site e receber a resposta do mesmo.
Agora vem a pergunta, como vou saber se o usuário e senha passados fizeram login com sucesso no site?
Ele realiza o processo depois do clique de um botão.
Segue o Código para Analise.
Desde já agradeço a todos.
public string Requisicao(string usuario,string senha) { CookieContainer cookies = new CookieContainer(); ICredentials credencial = new NetworkCredential(usuario,senha); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://servidorcliente/AVRWEBPublisher/loginDialog.aspx"); // pode ser qualquer site como por ex outlook.com req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)"; req.Method = "POST"; req.CookieContainer = cookies; req.Credentials = credencial; req.AllowAutoRedirect = true; req.AllowWriteStreamBuffering = true; req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; req.Headers.Add("Accept-Language:en-us,en;q=0.5"); req.Headers.Add("Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7"); req.KeepAlive = true; req.Headers.Add("Keep-Alive: 300"); req.Referer = "http://servidorcliente/AVRWEBPublisher/loginDialog.aspx"); req.ContentType = "application/x-www-form-urlencoded"; StreamWriter sw = new StreamWriter(req.GetRequestStream()); sw.Write(credencial); sw.Close(); HttpWebResponse response = (HttpWebResponse)req.GetResponse(); // como sei que o usuario e senha logaram?? StreamReader reader = new StreamReader(response.GetResponseStream()); string tmp = new StreamReader(response.GetResponseStream()).ReadToEnd(); foreach (Cookie cook in response.Cookies) { tmp += "\n" + cook.Name + ": " + cook.Value; } Response.Write(tmp); Response.End(); return tmp; }
Respostas
-
Olá,
Geralmente quando o login é feito com sucesso, a aplicação faz redirecionamento. Então você pode verifica o código resposta HTTP. Na casa do 3xx é codigo de redirecionamento.
http://msdn.microsoft.com/pt-br/library/system.net.httpwebresponse.statuscode%28v=vs.110%29.aspx
- Marcado como Resposta Rainer-Miranda terça-feira, 10 de dezembro de 2013 15:15
-
Consegui
No meu caso tive que passar os dados desta forma
Response.Write("<form id=form1 action='http://Pagina.aspx' method='POST'>"); Response.Write("<input name=Login1$UserName type=text id=Login1_Username value="+ user +"/>"); Response.Write("<input name=Login1$Password type=password id=Login1_Password value="+senha+"/>"); Response.Write("<input type=submit name=Login1$LoginButton id=Login1_LoginButton onclientclick=True>"); Response.Write("</form>"); Response.Write("<script>form1.submit();</script>");
E depois validar por uma Session
Obrigado Welington Jr, pela ajuda
- Marcado como Resposta Rainer-Miranda terça-feira, 10 de dezembro de 2013 15:15
- Editado Rainer-Miranda terça-feira, 10 de dezembro de 2013 15:18 Edit
Todas as Respostas
-
Olá,
Geralmente quando o login é feito com sucesso, a aplicação faz redirecionamento. Então você pode verifica o código resposta HTTP. Na casa do 3xx é codigo de redirecionamento.
http://msdn.microsoft.com/pt-br/library/system.net.httpwebresponse.statuscode%28v=vs.110%29.aspx
- Marcado como Resposta Rainer-Miranda terça-feira, 10 de dezembro de 2013 15:15
-
Mas o que acontece, que o Statuscode apenas recebe a resposta se os parâmetros foram enviados para a pagina com sucesso e não se efetuou o login com sucesso, ou seja, mesmo colocando um usuário e senha errados a resposta do statuscode é sempre ok.
Neste caso creio eu que o statuscode serve mais para validação de pagina do que de usuário.
Mas, obrigado pela resposta!
-
-
-
-
Consegui
No meu caso tive que passar os dados desta forma
Response.Write("<form id=form1 action='http://Pagina.aspx' method='POST'>"); Response.Write("<input name=Login1$UserName type=text id=Login1_Username value="+ user +"/>"); Response.Write("<input name=Login1$Password type=password id=Login1_Password value="+senha+"/>"); Response.Write("<input type=submit name=Login1$LoginButton id=Login1_LoginButton onclientclick=True>"); Response.Write("</form>"); Response.Write("<script>form1.submit();</script>");
E depois validar por uma Session
Obrigado Welington Jr, pela ajuda
- Marcado como Resposta Rainer-Miranda terça-feira, 10 de dezembro de 2013 15:15
- Editado Rainer-Miranda terça-feira, 10 de dezembro de 2013 15:18 Edit