2008-09-25 4 views
6

Допустим, у вас есть страница профиля, доступ к которой может получить только владелец этого профиля. Эта страница профиля расположена по адресу:Как вы можете тестировать веб-страницу с помощью ASP.NET MVC?

Пользователь/Профиль/{идентификатор пользователя}

Теперь, я думаю, для того, чтобы предотвратить доступ к этой странице другими пользователями, можно структурировать профиля функции вашего UserController класса, чтобы проверить ток идентичность сеанса:

HttpContext.Current.User.Identity.Name

Если идентификатор совпадает один в URL, то вы продолжите. В противном случае вы перенаправляетесь на какую-то страницу ошибок.

Мой вопрос: как вы можете тестировать нечто подобное? Я предполагаю, что вам нужно использовать какую-то инъекцию зависимостей вместо HttpContext в контроллере, чтобы проверить, но я не совсем понимаю, что лучший способ сделать это. Любые советы будут полезны.

ответ

1

Я в конечном итоге происходит с «UserNameFilter», показанной в Кази Manzur's blog post. Работает как прелесть и простой для тестирования.

1

Ссылка выше хорошая. Я хотел бы также добавить, что вместо того, чтобы программно проверить значение Пользователь.Идентичность.Имя, вы должны использовать атрибуты Авторизоваться, как указано в статье:

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

0

Это то, в чем насмехается, с поддельным HttpContext.

Смежные вопросы