Usuário com melhor resposta
Login e Autenticação ASP.NET MVC

Pergunta
-
Olá Pessoal,
Quando efetuo o login, o sistema retorna a tela de login. Como se não estivesse identificando que está logado.
Seguem os métodos.
[HttpPost] public ActionResult Login(FormCollection frmLogin) { //Recuperando valores do formulário string _Username = frmLogin["login"]; string _Password = frmLogin["password"]; //Se alguma das informações if (AutenticarUsuario(_Username.ToUpper(), _Password)) { return RedirectToAction("Index", "Home"); } else { ViewBag.AlertAuthentication = "Usuário ou senha incorretos!"; return View(); } } public bool AutenticarUsuario(string username, string password) { try { var retornoQueryUser = (from u in db.USUARIOs where u.LOGIN == username && u.SENHA == password select u).FirstOrDefault(); System.Web.HttpContext.Current.Session["UserId"] = retornoQueryUser.ID_USUARIO; System.Web.HttpContext.Current.Session["UserLogin"] = retornoQueryUser.LOGIN; if (retornoQueryUser != null) { //Criando um objeto cookie HttpCookie UserCookie = new HttpCookie("UserCookieAuthentication"); //Setando o ID do usuário no cookie UserCookie.Value = retornoQueryUser.ID_USUARIO.ToString(); //Definindo o prazo de vida do cookie UserCookie.Expires = DateTime.Now.AddDays(1); //Adicionando o cookie no contexto da aplicação System.Web.HttpContext.Current.Response.Cookies.Add(UserCookie); FormsAuthentication.SetAuthCookie(retornoQueryUser.LOGIN, false); return true; } else { return false; } }
Respostas
-
Obrigado André,
Mas não funcionou, porém encontrei uma linha no Web.config, que quando a comentei, deu certo.
Só não entendi o porque dessa linha ali, e o que ela faz.
Segue:
<system.webServer> <modules> <remove name="FormsAuthentication" /> </modules> </system.webServer>
- Marcado como Resposta Yannick Freitas terça-feira, 20 de setembro de 2016 16:08
Todas as Respostas
-
Olá,
Olhando apenas esse código, parece estar ok. Já Debugou para analisar o problema e o porque de ele estar caindo novamente na página de login?
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
Já sim André,
Por isso estou achando muito estranho. Ele passa para os métodos corretamente.
No Web.config coloquei o seguente:
<authentication mode="Forms"> <forms loginUrl="~/Authentication/Login" timeout="2880" /> </authentication>
HomeController
[Authorize] public class HomeController : Controller { public ActionResult Index() { var m = new Construtor(); m.LoadMenu(); m.LoadSubMenu(); return View(m); } }
Url Quando volta para a página:
http://localhost:53442/Authentication/Login?ReturnUrl=%2FHome%2FIndex
Será que eu devo verificar se o usuário está logado ?
- Editado Yannick Freitas terça-feira, 20 de setembro de 2016 12:52
-
Olha, pelo modelo da URL que é retornada, na verdade parece que o usuário (mesmo que logado) não tem permissão no caminho /Home/Index.
Tenta deixar aquela parte do seu web.config dessa forma:
<authentication mode="Forms"> <forms loginUrl="~/Authentication/Login" timeout="2880" /> </authentication> <authorization> <allow users="?"/> </authorization>
Se não funcionar, tenta assim:
<authentication mode="Forms"> <forms loginUrl="~/Authentication/Login" timeout="2880" /> </authentication> <authorization> <allow users="*"/> </authorization>
Obviamente, se funcionar, peço que teste a segurança e veja se por exemplo, pessoas não logadas conseguem acessar o caminho /Home/Index, etc.
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Sugerido como Resposta André SeccoMVP terça-feira, 20 de setembro de 2016 14:32
-
Obrigado André,
Mas não funcionou, porém encontrei uma linha no Web.config, que quando a comentei, deu certo.
Só não entendi o porque dessa linha ali, e o que ela faz.
Segue:
<system.webServer> <modules> <remove name="FormsAuthentication" /> </modules> </system.webServer>
- Marcado como Resposta Yannick Freitas terça-feira, 20 de setembro de 2016 16:08