none
Botão 'Voltar' do Browser - Após LogOff permite visualizar página (MVC 4) RRS feed

  • Pergunta

  • Pessoal,

    Estou desenvolvendo uma aplicação asp.net MVC 4 com SimpleMembership e estou enfrentando o seguinte problema: ao realizar o login, o usuário é direcionado para uma página principal da aplicação. Ao efetuar o logoff() o sistema redireciona corretamente para a página de login novamente, porém, usando o botão voltar do browser ele volta para a mesma página (principal) com o nome do usuário logado na parte superior.

    Segue alguns códigos para ajudar na análise do problema:

    Código do controlador da página principal:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    namespace GEAX.Controllers
    {
        [OutputCache(Duration = 60)]
        public class HomeController : Controller
        {
            [Authorize()]
            public ActionResult Index()
            {
                return View();
            }
    
            public ActionResult About()
            {
                ViewBag.Message = "Your app description page.";
    
                return View();
            }
    
            public ActionResult Contact()
            {
                ViewBag.Message = "Your contact page.";
    
                return View();
            }
        }
    }
    

    Código do controlador Account - método LogOff()

            public ActionResult LogOff()
            {
                FormsAuthentication.SignOut();
                Session.Abandon();
                Session.Clear();
    
                Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
                Response.Cache.SetCacheability(HttpCacheability.NoCache);
                Response.Cache.SetNoStore();
    
                return RedirectToAction("Login", "Account");
            }



    Thiago Tácito Siqueira

    sexta-feira, 23 de novembro de 2012 18:25

Respostas

Todas as Respostas

  • Thiago, isso é normal, ele vai conseguir visualizar mas não vai conseguir fazer nenhuma interação se você programou corretamente.

    O que você fazer para evitar isso de vez, é definir uma meta tag para o browser não gravar cache das páginas.

    http://stackoverflow.com/questions/1160105/asp-net-mvc-disable-browser-cache

    http://www.mnot.net/cache_docs/


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    sexta-feira, 23 de novembro de 2012 18:34
  • Fala Thiago boa tarde,

    O comando que você colocou na action LogOff coloca na action dessa forma:

    Em resposta ao comentário abaixo do colega isso não é normal, dessa forma a aplicação demostra falha de segurança.

    Outra dica! Antes de você efetuar o logoff copia a URL após o login, sai do sistema, feche o navegador, abra o navegador novamente e cole a url que copiou o sistema deverá redirecionar para o tela de login. 

    [Authorize()] public ActionResult Index() {

    	    Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
                Response.Cache.SetCacheability(HttpCacheability.NoCache);
                Response.Cache.SetNoStore();

    return View(); }


    Pedro Carvalho

    segunda-feira, 10 de fevereiro de 2014 15:35