Usuário com melhor resposta
Não permitir o usuário acessar direto uma página

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.
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.
- Sugerido como Resposta Antero Marques segunda-feira, 21 de março de 2016 03:57
- Marcado como Resposta welington jrModerator sábado, 16 de dezembro de 2017 15:15
-
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
- Editado André de Mattos Ferraz segunda-feira, 21 de março de 2016 12:53
- Marcado como Resposta welington jrModerator sábado, 16 de dezembro de 2017 15:15
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.
- Sugerido como Resposta Antero Marques segunda-feira, 21 de março de 2016 03:57
- Marcado como Resposta welington jrModerator sábado, 16 de dezembro de 2017 15:15
-
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
- Editado André de Mattos Ferraz segunda-feira, 21 de março de 2016 12:53
- Marcado como Resposta welington jrModerator sábado, 16 de dezembro de 2017 15:15