6

假设您有一个只能由该个人资料的所有者访问的个人资料页面。此个人资料页面位于:

用户/个人资料/{userID}

现在,我想为了防止其他用户访问此页面,您可以构建 UserController 类的 Profile 函数来检查当前会话的身份:

HttpContext.Current.User.Identity.Name

如果 id 与 url 中的匹配,则继续。否则,您将重定向到某种错误页面。

我的问题是你如何对这样的东西进行单元测试?我猜你需要使用某种依赖注入而不是控制器中的 HttpContext 来进行检查,但我不清楚最好的方法是什么。任何意见将是有益的。

4

4 回答 4

1

您可能可以通过使用假控制器上下文来做到这一点。查看这篇文章:http ://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx

于 2008-09-25T10:51:06.703 回答
1

上面的链接是一个很好的链接。我还要补充一点,您应该使用文章中概述的 Authorize 属性,而不是以编程方式检查 User.Identity.Name 值:

http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

于 2008-10-01T14:43:10.113 回答
1

我最终选择了 Kazi Manzur 的博客文章中显示的“UserNameFilter” 。像魅力一样工作,易于单元测试。

于 2009-09-01T00:56:11.743 回答
0

这就是使用假 HttpContext 进行模拟的地方。

于 2009-09-01T01:05:07.097 回答