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

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

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

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

HttpContext.Current.User.Identity.Name

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

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

Ответы [ 4 ]

1 голос
/ 01 октября 2008

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

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

1 голос
/ 01 сентября 2009

Я закончил тем, что выбрал «UserNameFilter», показанный в блоге Кази Манзура Работает как шарм и легко тестируется.

1 голос
/ 25 сентября 2008

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

0 голосов
/ 01 сентября 2009

Вот тут и начинается насмешка с поддельным HttpContext.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...