Como você unia a autorização da página da Web de teste usando o ASP.NET MVC?

StackOverflow https://stackoverflow.com/questions/131723

  •  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.

Foi ú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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top