Como você unia a autorização da página da Web de teste usando o ASP.NET MVC?
-
02-07-2019 - |
Pergunta
Digamos que você tenha uma página de perfil que só possa ser acessada pelo proprietário desse perfil. Esta página de perfil está localizada em:
Usuário/perfil/{userID}
Agora, imagino que, para evitar o acesso a esta página por outros usuários, você pode estruturar sua função de perfil da classe UserController para verificar a identidade da sessão atual:
Httpcontext.current.user.Identity.Name
Se o ID corresponder ao da URL, você prosseguirá. Caso contrário, você redireciona para algum tipo de página de erro.
Minha pergunta é como você testa a unidade de algo assim? Acho que você precisa usar algum tipo de injeção de dependência em vez do HTTPContext no controlador para fazer a verificação, mas não estou claro qual é a melhor maneira de fazer. Qualquer conselho seria útil.
Solução 2
Acabei indo com o "UserNameFilter" mostrado no Kazi Manzur's Postagem do blog. Funciona como um charme e teste fácil de unir.
Outras dicas
O link acima é bom. Eu também acrescentaria que, em vez de verificar programaticamente o user.Identity.name Valor, você deve usar os atributos Authorize, conforme descrito no artigo:
http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-nalm-mvc-preview-4-release-part-1.aspx
Você provavelmente pode fazer isso usando uma farsa para o contexto do controlador. Confira este artigo: http://stephenwalther.com/blog/archive/2008/07/01/asp-nalm-mvc-tip-12-faking-the-controller-context.aspx
É aqui que entra zombando, com um httpcontext falso.