Когда был изменен образец AccountController по умолчанию? - PullRequest
4 голосов
/ 25 июля 2011

Я задал этот вопрос на форумах asp.net, и никто, кажется, не знает, о чем я говорю.Я не уверен, почему это так, но я решил спросить здесь, есть ли кто-нибудь с какой-то проницательностью.

Назад, когда MVC2 был выпущен, он включал образец AccountController, который обернул встроенныйКлассы членства и FormsAuthentication с тестируемыми интерфейсами и сервисами.Я много читал об этом, и это считалось хорошим делом, потому что классы Membership и FormsAuthentication было непросто проверить.

Недавно я создал новый пример проекта с моей последней версией (SP1, MVC3, ИнструментыОбновление и т. Д.), И я считаю, что AccountController теперь намного проще.Ушли в прошлое Интерфейсы и MembershipService и FormsAuthenticationServices.Образец теперь напрямую вызывает классы Membership и FormsAuthentication.

Мне интересно, кто-нибудь знает, когда это произошло и почему?Тестируемые интерфейсы больше не считаются правильными?Была ли техническая причина изменить это?

Лучшее, что я могу понять, - это то, что это произошло как часть изменения, чтобы устранить возможную уязвимость при передаче обратных URL-адресов по открытому URL-адресу.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 25 июля 2011

Новая модель напоминает кодовый подход EF, где AccountModel является классом POCO. Внутри нового API больше нет абстракций, но есть прямые вызовы статических методов, таких как FormsAuthentication.SetAuthCookie, что делает этот код трудным для модульного тестирования. Не то, что я бы порекомендовал на основе вашего реального прикладного кода.

И, да, они исправили уязвимость в методе LogOn, которая не проверяла, является ли возвращаемый URL-адрес относительным URL-адресом перед перенаправлением.

Лично я бы порекомендовал вам использовать абстракции, чтобы ослабить связь между логикой вашего контроллера и его зависимостями. Это облегчит код для модульного тестирования.

Для меня передача всех этих моделей предметной области в представления без использования моделей представлений - это абсолютные анти-паттерны, и я никогда их не беспокоил. Я просто создаю пустой проект и делаю все по-своему. Я имею в виду, что в проекте по умолчанию они даже используют ViewBag ради Христа!

0 голосов
/ 27 июля 2011

Контроллер учетных записей был изменен с обновлением инструментов MVC3 (когда они также включали использование jQuery через Nuget)

...