Как вы выполняете авторизацию веб-страницы модульного тестирования с помощью ASP.NET MVC?

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

  •  02-07-2019
  •  | 
  •  

Вопрос

Допустим, у вас есть страница профиля, доступ к которой имеет только владелец этого профиля.Страница профиля находится по адресу:

Пользователь/Профиль/{userID}

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

HttpContext.Current.User.Identity.Name

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

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

Это было полезно?

Решение 2

В итоге я выбрал «UserNameFilter», показанный в книге Кази Манзура. Сообщение блога.Работает как шарм и легко поддается модульному тестированию.

Другие советы

Ссылка выше хорошая.Я бы также добавил, что вместо программной проверки значения User.Identity.Name следует использовать атрибуты Authorize, как описано в статье:

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

Вероятно, вы можете сделать это, используя подделку для контекста контроллера.Ознакомьтесь с этой статьей: http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx

Вот тут-то и возникает насмешка с поддельным HttpContext.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top