none
Não permitir o usuário acessar direto uma página RRS feed

  • Pergunta

  • Fala galera.

    Como evito no que Asp.Net MVC um usuário simplesmente troque a url do endereço e tenha acesso a outros dados que não deveria. Exemplo, ele acessa uma tela através da url www.dominio.com.br/usuario/1 e simplesmente trocando o final da url (www.dominio.com.br/usuario/2) teria acesso a outro usuário. Estou falando de uma Action HttpGet.

    Desde já obrigado.

    segunda-feira, 21 de março de 2016 00:38

Respostas

  • Você pode criar uma rota que não utilize o ID no final, como /usuario/minha-conta e nela você pega o ID pela Session do usuário ou seja lá o que você está utilizando para identificar o usuário.

    A outra opção seria verificar se o Id da URL é igual ao Id do usuário, caso não seja, você redireciona ele para uma página 404.

    segunda-feira, 21 de março de 2016 03:42
  • Eu criaria um filtro customizado onde validaria se o usuário tem acesso, e ai decorava o controller com ele pra validar as actions.

    public class CustomFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            // This method is executed before calling the action
            // and here you have access to the route data:
            var foo = filterContext.RouteData.Values["foo"];
            // TODO: use the foo route value to perform some action
    
           //Valida as informaçoes se tiver acesso vc deixa senao vc manda par uma pagina de erro...
    
            base.OnActionExecuting(filterContext);
        }
    }

    Ai no seu controller vc coloca assim:

    [CustomFilterAttribute] public class SeuController : Controller

    {...}



    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985


    segunda-feira, 21 de março de 2016 12:52

Todas as Respostas

  • Você pode criar uma rota que não utilize o ID no final, como /usuario/minha-conta e nela você pega o ID pela Session do usuário ou seja lá o que você está utilizando para identificar o usuário.

    A outra opção seria verificar se o Id da URL é igual ao Id do usuário, caso não seja, você redireciona ele para uma página 404.

    segunda-feira, 21 de março de 2016 03:42
  • Eu criaria um filtro customizado onde validaria se o usuário tem acesso, e ai decorava o controller com ele pra validar as actions.

    public class CustomFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            // This method is executed before calling the action
            // and here you have access to the route data:
            var foo = filterContext.RouteData.Values["foo"];
            // TODO: use the foo route value to perform some action
    
           //Valida as informaçoes se tiver acesso vc deixa senao vc manda par uma pagina de erro...
    
            base.OnActionExecuting(filterContext);
        }
    }

    Ai no seu controller vc coloca assim:

    [CustomFilterAttribute] public class SeuController : Controller

    {...}



    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985


    segunda-feira, 21 de março de 2016 12:52